字符串的左旋轉(zhuǎn)操作是把字符串前面的若干個(gè)字符轉(zhuǎn)移到字符串的尾部贾虽。
請(qǐng)定義一個(gè)函數(shù)實(shí)現(xiàn)字符串左旋轉(zhuǎn)操作的功能间聊。
比如輸入字符串"abcdefg"和數(shù)字 2笤虫,該函數(shù)將返回左旋轉(zhuǎn) 2位得到的結(jié)果"cdefgab"。
注意:
數(shù)據(jù)保證 n小于等于輸入字符串的長(zhǎng)度直撤。
樣例
輸入:"abcdefg" , n=2
輸出:"cdefgab"
分析:
算法一:
時(shí)間復(fù)雜度:
空間復(fù)雜度:
class Solution {
public:
string leftRotateString(string str, int n) {
string s1, s2;
for(int i = 0; i<n; i++) s1+=str[i];
for(int j = n; j<str.size(); j++) s2+=str[j];
return s2+s1;
}
};
算法二:
1.將整個(gè)字符串翻轉(zhuǎn)
2.將前n個(gè)字符串翻轉(zhuǎn)
3.將n后面的字符串翻轉(zhuǎn)
最后即為答案
時(shí)間復(fù)雜度:
空間復(fù)雜度:
class Solution {
public:
string leftRotateString(string str, int n) {
reverse(str.begin(), str.end());
reverse(str.begin(), str.end()-n);
reverse(str.end()-n, str.end());
return str;
}
};