string reverseLeftWords(string s, int n) {
string res;
for (int i = n; i < s.size(); i++) res.push_back(s[i]);
for (int i = 0; i < n; i++) res.push_back(s[i]);
return res;
}
平平无奇写法
还有一种写法是这样的,可以不使用额外空间,思路可能比较巧妙,但是我并不觉得好
string reverseLeftWords(string s, int n) {
/* 反转n前面的字符串 */
reverse(s.begin(), s.begin() + n);
/* 反转n后面的字符串 */
reverse(s.begin() + n, s.end());
/* 反转整个字符串 */
reverse(s.begin(), s.end());
return s;
}
首先reverse()
函数并不能保证每种语言都有实现,我希望要么不使用,要么就使用更基础的方法——每种语言都会有实现
其次虽然我不知道reverse()
方法的具体实现,但是我猜复杂度应该是 2N,算是时间换空间