编程练习
题目:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
思路:循环移位可以用字符串的拼接来解决,将需要循环移位的前n个字符先截取出来,然后加到被截取过得字符串的后面即可,此题还需要注意的点是需要考虑n大于字符串长度以及等于字符串长度的时候的特殊情况怎么处理。
java代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23public class LeftRotateString {
public static String LeftRotateString(String str,int n) {
if(str==null || str=="") {
return str;
}
if(n>str.length()) {
return "";
}
if(n==str.length()) {
return str;
}
String s1=str.substring(0, n);
System.out.println(s1);
String s2=str.substring(n, str.length());
System.out.println(s2);
String s=s2+s1;
return s;
}
public static void main(String[] args) {
String s="adfsaf";
System.out.println(LeftRotateString(s,6));
}
}