JAVA两次反转
左旋转字符串
http://www.nowcoder.com/questionTerminal/12d959b108cb42b1ab72cef4d36af5ec
对于"abcXYZdef",3;
先将 "abc" 和 "XYZdef" 分别翻转,得到 "cbafedZYX",然后再把整个字符串翻转得到 "XYZdefabc"。
public class Solution {
public static String LeftRotateString(String str,int n) {
if (str ==null || n>str.length()) return "";
if (n==0) return str;
StringBuffer sb = new StringBuffer(str);
for (int i=0,j=n-1;j>i;i++,j--){
char tmp = sb.charAt(i);
sb.setCharAt(i, sb.charAt(j));
sb.setCharAt(j, tmp);
}
for (int i=n,j=sb.length()-1;j>i;i++,j--){
char tmp = sb.charAt(i);
sb.setCharAt(i, sb.charAt(j));
sb.setCharAt(j, tmp);
}
for (int i=0,j=sb.length()-1;j>i;i++,j--){
char tmp = sb.charAt(i);
sb.setCharAt(i, sb.charAt(j));
sb.setCharAt(j, tmp);
}
return sb.toString();
}
}
查看12道真题和解析