String newStr;
public RandomCuriosity(String input){
newStr = input;
}
public void shiftChars(){
char[] oldChar = newStr.toCharArray();
char[] newChar = new char[oldChar.length];
newChar[0] = oldChar[oldChar.length-1];
for(int i = 1; i < oldChar.length; i++){
newChar[i] = oldChar[i-1];
}
newStr = String.valueOf(newChar);
}
我创建了一个将字符向前移动一个方法。例如,输入可以是:
输入:Stackoverflow
输出:wStackoverflo
我是怎么做到的,我改变了一个字符串的实例。将该字符串转换为char
数组(称为oldChar
),将oldChar
的最后一个索引指定为newChar
的第一个索引,并创建一个for循环将oldChar
的第一个索引作为我的新Char
数组的第二个索引,依此类推。最后,我将char数组转换回字符串。
我觉得我做了太多的事情来做非常简单的事情。有没有更有效的方法来做这样的事情?
编辑感谢您的回答!
答案 0 :(得分:13)
newStr = newStr.charAt(newStr.length() - 1) + newStr.substring(0, newStr.length() - 1);
答案 1 :(得分:1)
你可以让你的生活更简单:
public static void main (String[] args) throws java.lang.Exception {
String input = "Stackoverflow";
for(int i = 0; i < s.length(); i++){
input = shift(input);
System.out.println(input);
}
}
public static String shift(String s) {
return s.charAt(s.length()-1)+s.substring(0, s.length()-1);
}
输出:
wStackoverflo
owStackoverfl
lowStackoverf
flowStackover
rflowStackove
erflowStackov
verflowStacko
overflowStack
koverflowStac
ckoverflowSta
ackoverflowSt
tackoverflowS
Stackoverflow
答案 2 :(得分:0)
您可以使用System.arrayCopy:
char[] oldChar = newStr.toCharArray();
char[] newChar = new char[oldChar.length];
newChar[0] = oldChar[oldChar.length - 1];
System.arrayCopy(oldChar, 0, newChar, 1, oldChar.length - 1);
答案 3 :(得分:0)
您可以使用StringBuilders。
StringBuilder strb = new StringBuilder();
strb.append(oldChar[oldChar.length-1]).append(oldchar.substring(0, oldChar.length-1));
newStr = strb.toString();
答案 4 :(得分:0)
试试这个..
String old = "String";
char first = old.charAt(old.length()-1);
String newString = first+old.substring(0,old.length()-1);
System.out.println(newString);
答案 5 :(得分:0)
另一种解决方案,但不使用循环,可以左右移动:
public static String cyclicLeftShift(String s, int n){ //'n' is the number of characters to shift left
n = n%s.length();
return s.substring(n) + s.substring(0, n);
}
public static String cyclicRightShift(String s, int n){ //'n' is the number of characters to shift right
n = n%s.length();
return s.substring(s.length() - n , s.length()) + s.substring(0, s.length() - n);
}
答案 6 :(得分:-1)
通过Java,您可以将其向前移动O(n),其中n是根据字符在空间o(1)前进的次数
public static String shiftChars(String s , int times) {
String temp = s;
for (int i = 0; i < times ; i++) {
temp = temp.charAt(temp.length()-1)+temp.substring(0, temp.length()-1);
}
return temp;
}