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; }};
联系客服