1、题目描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
2、思路
第一步:将字符串分为两部分,第一部分使要左旋的字符,第二部分是剩余的字符。将这两部分的字符分别翻转。
第二步:翻转整个字符串。
3、代码实现
public class Solution {
public String LeftRotateString(String str,int n) {
if(str.length() == 0){
return "";
}
StringBuffer buffer1 = new StringBuffer(str);//将String转换为StringBuffer
StringBuffer buffer2 = new StringBuffer(str);
StringBuffer buffer = new StringBuffer();
buffer1.delete(0,n);//将字符串的前n个字符删除
buffer2.delete(n,str.length());//将字符串中n之后的字符删除
buffer.append(buffer1.toString()).append(buffer2.toString());//将两个字符串剩余的部分相连
return buffer.toString();//将StringBuffer转换为String
}
}
注:该代码不是用上述的方法实现,而是用比较简单的,直接将字符串的前一部分和后一部分交换位置。