시간 비교를 하기위해 각 메소드는 10000번씩 반복하여 실행시키겠다.
static final String word = "Hello World!";
public static void main(String[] args) {
long start = System.currentTimeMillis();
for(int i = 1; i<= 1000; i++){
method1(word);
}
long end = System.currentTimeMillis();
System.out.println("method1 time : " + (end - start) );
}
static String method1(String string){
return new StringBuffer(string).reverse().toString();
}
10000: 2 ms
static String method2(String string){
Stack<Character> stack = new Stack<Character>();
char[] str = string.toCharArray();
for(int i = 0; i < str.length; i++){
stack.push(str[i]);
}
int k = 0;
while (!stack.empty()){
str[k++] = stack.pop();
}
return String.copyValueOf(str);
}
10000: 9ms
int n = str.length();
char[] temp = new char[n];
for (int i = 0; i < n; i++) {
temp[n - i - 1] = str.charAt(i);
}
return String.copyValueOf(temp);
10000: 2ms
static String method4(String string){
char[] c = string.toCharArray();
for (int l = 0, h = string.length() - 1; l < h; l++, h--)
{
char temp = c[l];
c[l] = c[h];
c[h]
= temp;
}
return String.copyValueOf(c);
}
chararray를 이용하여 문자열을 반전시키는것이 가장 빠르다.
참고: https://www.techiedelight.com/ko/10-ways-reverse-a-string-java/