左旋字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。
比如,输入字符串 " abcdefg " 和数字 2,该函数将返回左旋转两位得到的结果 " cdefgab " 。
思路 1:
在原字符串上进行 += 和 erase 操作 → 效率不高
- 关于 erase() → 字符串擦除函数
// 运行时间 160 ms
class Solution {
public:
string reverseLeftWords(string str, int n) {
n = n % str.size();
for(int i = 0; i < n; ++i){
char s = str[0];
str += s;
str.erase(0, 1);
}
return str;
}
};
思路 2:
转换为找子串问题
- 关于 substr() → 找子串函数
// 运行时间 4 ms
class Solution {
public:
string reverseLeftWords(string s, int n) {
n = n % s.size();
return (s + s).substr(n, s.size());
}
};