题目描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
代码一
思想
使用函数,不推荐
// public static String LeftRotateString(String str,int n) {// String beginstr;// String endstr;// if(str.length()>1) {// beginstr = str.substring(0, n);// endstr = str.substring(n, str.length());// str = endstr+beginstr;// }// return str;//// }
代码二
思想
使用队列,eclipse可以但是牛客网上编译不通过
public static String LeftRotateString(String str,int n) {Queue<String> q = new LinkedList<String>();String newStr="";String[] arrayStr = str.split("");for(String s:arrayStr){q.offer(s);}for(int i=0;i<n;i++) {String temp = q.poll();q.offer(temp);}while(!q.isEmpty()) {newStr += q.poll();}return newStr;}
代码三
思想
只可臆想不可言传
public String LeftRotateString(String str,int n) {if(str.length()<=1)return str;int len = str.length();n=n%len;//防止n过大越界str+=str;return str.substring(n,len+n);}
