我尝试了两种不同的方法来反转char数组
//method 1
char c[] = {'A', 'B', 'C', 'D'};
char c_rev[] = new char[4];
for (int i = 3; i >= 0; i--) {
c_rev[i] = c[3 - i];
}
System.out.println(Arrays.toString(c_rev));
Run Code Online (Sandbox Code Playgroud)
//method 2
char c[] = {'A', 'B', 'C', 'D'};
Stack<Character> st = new Stack();
for (int i = 0; i < 4; i++) {
st.push(c[i]);
}
for (int i = 0; i < 4; i++) {
c[i] = st.pop();
}
System.out.println(Arrays.toString(c));
Run Code Online (Sandbox Code Playgroud)
我只是想知道什么是最有效的。方法1还是方法2?任何人都可以帮助我或提出任何建议吗?
就时间复杂度而言,它们都是 O(n)。性能在这里并不重要。
选择哪个?没有任何。我会使用现成的方法StringBuilder#reverse:
String reversed = new StringBuilder(new String(c)).reverse().toString();
Run Code Online (Sandbox Code Playgroud)
如果我想从你提出的两种方法中选择一个,我会选择第一个,它只有一个循环,而且很简单,不会调用任何方法,也不会创建辅助对象;您只需创建一个新数组并直接将新元素推送到其中即可。