鉴于问题:查找字符串的所有循环排列
例如:给定一个字符串:“abcd”
字符串的所有循环排列将是:“abcd”、“dabc”、“cdab”、“bcda”
这是我尝试过的:
for(int i = 0; i < str.size(); i++){
permu.push_back(str);
str.insert(0, 1, str[str.size()-1]);
str.erase(str.end()-1);
}
Run Code Online (Sandbox Code Playgroud)
由于插入和擦除函数需要 O(n) 使整体解决方案 O(n^2)
有没有办法在 O(n) 或更少的时间内解决这个问题?