标签:return eve str 函数实现 左旋转字符串 reverse span abc bcd
把字符串前面的若干个字符转移到字符串的尾部,要求只用一个函数实现
利用线性代数中的矩阵求逆的思想:\((AB)^{-1} = B^{-1}A^{-1}\)
定义一个函数reverse(s, l, r)
,将字符串s
的[l, r]
区间内的元素逆置,比如abc
变为cba
,这个reverse()
函数可以自己写或者用STL里的
以题目为例,abcdefg->gfedcba
分下面几步
gfedcba
cdefgba
,5 = 字符串长度 - 2cdefgab
,题目说要左旋转2位class Solution {
public:
void rever(string& s, int l, int r) {
for(int i = l; i <= (l + r) / 2; i++) {
swap(s[i], s[l + r - I]);
}
}
string reverseLeftWords(string s, int n) {
n = n % (s.size() + 1);
rever(s, 0, s.size() - 1);
rever(s, 0, s.size() - n - 1);
rever(s, s.size() - n, s.size() - 1);
return s;
}
};
标签:return eve str 函数实现 左旋转字符串 reverse span abc bcd
原文地址:https://www.cnblogs.com/MartinLwx/p/14399168.html