示例输入#1
shift({'a','b','c','d','e'})
样本输出#1
{'b','c','d','e','a'}
public class ShiftElements {
static char[] testcase1 = {'a', 'b', 'd', 'c', 'b', 'd', 'c'};
public static void main(String args[]) {
ShiftElements testInstance = new ShiftElements();
char[] result = testInstance.shift(testcase1);
System.out.println(result);
}
public char[] shift(char[] elements) {
if (elements.length >= 2) {
int temp = elements[0];
for (int i = 0; i < elements.length - 1; i++)
elements[i] = elements[i + 1];
temp = elements[elements.length - 1];
}
return elements;
}
当我尝试运行测试用例时,它输入{'b','c','d','e','a'}'
失败。我的输出{'c','d','e','a','a'}
正确输出{'c','d','e','a','b'}
。该怎么办?
答案 0 :(得分:5)
temp=elements[elements.length-1];
那应该是另一种方式。您只是将elements[elements.length-1]
分配给本地临时变量,而不是更改elements[elements.length-1]
。
将其更改为:
elements[elements.length-1] = temp;
另外,将temp
设为char
,它不必是int
。
答案 1 :(得分:1)
你的最后一行应该翻转:
elements[elements.length-1] = temp;
也可以使用System.arraycopy
:
char temp = elements[0];
System.arraycopy(elements, 1, elements, 0, elements.length - 1);
elements[elements.length - 1] = temp;
答案 2 :(得分:0)
另一种方法是使用String
:
public char[] shift(char[] elements) {
return elements.length < 2 ?
elements :
(new String(elements, 1, elements.length - 1) + elements[0])
.toCharArray();
}