[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.