打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
剑指offer 43 左旋转字符串

题目描述

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

str.substr(pos, n) 返回一个字符串,包含s中从下标pos开始的n个字符
class Solution {public:    string LeftRotateString(string str, int n) {        int len=str.length();        if(len==0){            return "";        }                n=n%len;        str+=str;        return str.substr(n,len);    }};

//和翻转单词顺序是一样的原理,分为两段各做一次翻转再做一次总的翻转。主要注意输入为空串的情况和越界的问题,一定要注意这些细节
class Solution {public:void Reverse(string&str,int start,int end)    {        if(start>=end)            return;        while(start<end)        {            char c = str[start];            str[start]=str[end];            str[end] = c;            start++;            end--;        }    }    string LeftRotateString(string str, int n) {        int length = str.size();              if(length<=0)            return str;                n=n%length;        if(length>0&& n>0&&n<length)        {            int pFirstStart = 0;            int pFirstEnd = 0+n-1;            int pSecondStart = 0+n;            int pSecondEnd = 0+length-1;                         Reverse(str,pFirstStart,pFirstEnd);            Reverse(str,pSecondStart,pSecondEnd);            Reverse(str,pFirstStart,pSecondEnd);        }    return str;    }};


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
腾讯2012年4月笔试题附加题
​LeetCode刷题实战186:翻转字符串里的单词 II
翻转单词顺序列
左旋转字符串
大数相加减以及相乘模板
C#算法实现字符串反转
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服