[HackerRank] Java String Reverse
Ploblem
My solution
- 예전에 동일한 문제 해결 방법으로 Stack에 넣었다가 pop()으로 reverse 한다는 이야기를 들은적이 있어서 그렇게 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void solution(String s) {
if(isPalindrome(s)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
private boolean isPalindrome(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
stack.push(c);
}
StringBuilder sb = new StringBuilder();
while(!stack.isEmpty()) {
sb.append(stack.pop());
}
return sb.toString().equals(s);
}
Simple solution
- StringBuilder 객체로 만든 뒤 reverse() 호출
1
2
3
private void solution2(String s) {
System.out.println( s.equals( new StringBuilder(s).reverse().toString()) ? "Yes" : "No" );
}
추가 내용
- 내가 풀이한 방법대로 했을때 공간복잡도를 생각했을때 더 많이 사용될 수 있음. Stack 인스턴스를 만들어야 하기 떄문.. 만약 StringBulder 없이 하더라면 비슷할것으로 생각된다.
- StringBuilder.reverse() 코드를 보면 for-loop를 돌면서 처리한다.
Comments powered by Disqus.