码迷,mamicode.com
首页 > 其他好文 > 详细

剑指 Offer 58 - II. 左旋转字符串

时间:2021-03-16 14:08:17      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:字符串   app   return   ++   turn   string   div   str   int   

仅供自己学习

 

思路:

可以直接把0~n-1的位置的元素加入到s后面,然后再把0~n-1的元素删除即可。分别调用append,erase函数

 

代码:

1 class Solution {
2 public:
3     string reverseLeftWords(string s, int n) {
4         
5         s.append(s,0,n);
6         s.erase(0,n);
7         return s;
8     }
9 };

 

还有一种 (A?1B?1) ?1 = BA,例如a,b,c,d,e  , n=2.  反转A,b,a,c,d,e 反转B,b,a,e,d,c,反转A逆B逆,c,d,e,a,b

 

代码:

class Solution {
public:
    string reverseLeftWords(string s, int n) {
        reverse(s.begin(),s.begin()+n);
        reverse(s.begin()+n,s.end());
        reverse(s.begin(),s.end());
        return s;
    }
};

 

如果遍历加入一个新的string,可以考虑从i=n开始,循环条件为i<n+s.length(),s的下标为 i%s.length,这样就弄从n加到s.length,在加入0-n的元素。

 

还可调用C++的STL中rotate算法

1 class Solution {
2 public:
3     string reverseLeftWords(string s, int n) {
4         rotate(s.begin(),s.begin()+n,s.end());
5         return s;
6     }
7 };

 

剑指 Offer 58 - II. 左旋转字符串

标签:字符串   app   return   ++   turn   string   div   str   int   

原文地址:https://www.cnblogs.com/Mrsdwang/p/14537661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!