public String LeftRotateString(String str,int n) {
if (str == null || n < 0) return null;
if (n > str.length()) return "";
char[] strs = str.toCharArray();
int len = str.length();
char[] tmp = new char[n];
for (int i = 0; i < n; i++) {
tmp[i] = strs[i];
}
for (int i = 0; i < len-n; i++) {
strs[i] = strs[i+n];
}
for (int i = len-n, j = 0; i < len && j < n; i++, j++) {
strs[i] = tmp[j];
}
return String.valueOf(strs);
}
XY -> YX
多次翻转
public String LeftRotateString(String str,int n) {
if (str == null || n < 0) return null;
if (n > str.length()) return "";
int len = str.length();
char[] strs = str.toCharArray();
reverse(strs, 0, n-1);
reverse(strs, n, len-1);
reverse(strs, 0, len-1);
return String.valueOf(strs);
}
private void reverse(char[] strs, int lo, int hi) {
while (lo < hi) {
char tmp = strs[lo];
strs[lo] = strs[hi];
strs[hi] = tmp;
lo++; hi--;
}
}
左旋转字符串
最新推荐文章于 2024-02-25 09:37:46 发布