43、左旋转字符串

xiaoxiao2021-02-28  89

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

题目很简单,字符串的应用问题

Ⅰ 我的方法 单纯地先把前面取出来,删掉,加到后面。 代码:

class Solution { public: string LeftRotateString(string str, int n) { string temp; if(str.length() < n || str.length()==0) return temp; temp = str.substr(0,n);//获得从第0位开始的n个字符 str.erase(0,n);//删掉从第0位开始的n个字符 str += temp; return str; } };

Ⅱ 更简洁一点的方法 代码:

class Solution { public: string LeftRotateString(string str, int n) { int len = str.length();//这里保存str的原始长度很必要,因为最后不能返回str.length(),因为长度发生改变了 if(len < n || len==0) return ""; n = n % len; str += str;//因为最后只返回len长度,所以把str直接加在后面就可以 return str.substr(n,len); } };
转载请注明原文地址: https://www.6miu.com/read-70667.html

最新回复(0)