Mir*_*ili 5 java arrays string shift character-codes
这有效:
for (char c : sourceString.toCharArray())
destString += (char) (c + shiftValue);
System.out.println(destString);
Run Code Online (Sandbox Code Playgroud)
是否有更好/更快(优化)的方式?
好吧,我开始避免使用重复的字符串连接.这是一个众所周知的性能问题.
在这种情况下,你知道你需要开始的确切长度,所以你甚至不需要StringBuilder- 一个char[]很好:
char[] result = new char[srcString.length()];
for (int i = 0; i < result.length; i++) {
result[i] = (char) (srcString.charAt(i) + shiftValue);
}
String destString = new String(result);
Run Code Online (Sandbox Code Playgroud)
(使用toCharArray然后覆盖每个元素的答案也很好,虽然我希望任何性能差异都很小.如果这是真正的性能关键代码,你需要用你的实际系统进行测试.主要的一点是两者都是O(N)方法而不是O(N 2).)
但是,你应该考虑一下你是否真的只想换班 - 大多数这样的练习比轮班更多旋转,例如,如果你从AZ开始,你最终应该使用AZ ......换档值1应该改变Z到A,而不是"Z之后的Unicode字符"(即[).在您的情况下,这可能不是一个要求,但您当然应该考虑它.
更短的版本.无需charAt(i)每次都在循环中调用.
char[] result = srcString.toCharArray();
for (int i = 0; i < result.length; i++) {
result[i] += shiftValue;
}
String destString = new String(result);
Run Code Online (Sandbox Code Playgroud)