剑指Offer58-II.左旋转字符串
写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点
1.切片
- 分为a+b,然后输出b+a
class Solution {
public:
string reverseLeftWords(string s, int n) {
string temp;
int i=0;
while(i<n) temp+=s[i++];
s.erase(0,n);//erase函数
s=s+temp;
return s;
}
};
2.substr
这个思想好像见过,就在相交链表,也是把两个加起来,这个方法没有改变原来的字符串
class Solution {
public:
string reverseLeftWords(string s, int n) {
return (s+s).substr(n,s.size());//这个函数要比erase好用
}
};
时间复杂度/空间复杂度分析/面试场景如何作答
面试场景-offer
看是否需要改变字符串本身,如果不能改变选择第二种
知识点及反思
- erase
- substr