题解 | #反转链表#

左旋转字符串

http://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec

描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列 S ,请你把其循环左移 K 位后的序列输出。例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “XYZdefabc” 。是不是很简单?OK,搞定它!

数据范围:输入的字符串长度满足 0 \le len \le 100 \0≤len≤100 , 0 \le n \le 100 \0≤n≤100 进阶:空间复杂度 O(n)\O(n) ,时间复杂度 O(n)\O(n)

输入:
"abcXYZdef",3
返回值:
"XYZdefabc"

分析一下思路,利用vector把要移动的字符串储存起来,然后再利用“+”号在尾端加上。如果左移的k位大于字符串的长度,只需将k除以字符串长度取余即可作为左移的位数。

class Solution {
public:
    string LeftRotateString(string str, int n) {
         vector<char>v1;
         if(str.size()==0)
             return str;
         if(n>str.size()){
             n=n%str.size();
         }
         for(int i=0;i<n;i++){
             v1.push_back(str[i]);
         }
         str.erase(str.begin(), str.begin()+n);
         for(int i=0;i<n;i++){
             str+=v1[i];
         }
         return str;
    }
};
全部评论
可以可以
点赞 回复 分享
发布于 2022-03-12 16:38

相关推荐

11-13 14:37
门头沟学院 Java
点赞 评论 收藏
分享
10-30 16:31
重庆大学 Java
代码飞升_不回私信人...:你说你善于学习,大家都会说。你说你是985,985会替你表达一切
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务