题目描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
解题思路:
- 左移K位就是将前K位放在字符串的最后
代码:
/**
* @author: hyl
* @date: 2019/08/15
**/
public class Que43 {
public String LeftRotateString(String str,int n) {
if (str == null || str.length() == 0 || n < 0){
return "";
}
if (n == 0){
return str;
}
StringBuilder sb = new StringBuilder();
n = n % str.length();
//将第K为到str.length放在前面
sb.append(str.substring(n,str.length()));
//将前K位放在后面
sb.append(str.substring(0,n));
return sb.toString();
}
}
代码地址:
https://github.com/Han-YLun/jianzhiOffer/blob/master/Solution/src/Que43.java
文章为DavidHan原创,如果文章有错的地方欢迎指正,大家互相交流。