알고리즘 문제 풀이: 자바/LeetCode

151. Reverse Words in a String

hueco 2025. 11. 3.

 

📌 문제 링크 :

https://leetcode.com/problems/reverse-words-in-a-string

 

내 풀이(Success) :

class Solution {
    public String reverseWords(String s) {
        String[] strings = s.trim().replaceAll("\\s+", " ").split(" ");
        StringBuilder sb = new StringBuilder();
        for (int i = strings.length - 1; i >= 0; i--) {
            sb.append(strings[i]);
            if (i != 0) sb.append(" ");
        }
        return sb.toString();
    }
}

 

🧐 리뷰 :

 리트코드에서 처음으로 푼 Medium 난이도 문제인데 생각보다 쉽게 풀렸다. 그래도 replaceAll() 메서드로 "하나 이상의 공백 문자"를 "하나의 공백 문자"로 치환하지 못했다면 좀 더 어렵게 문제를 풀었을 것 같다. replaceAll() 메서드에서 사용된 정규식도 기억이 나질 않아서 찾아봤는데, 알고리즘 문제를 풀때 자주 사용되는 정규 표현식은 어느정도는 찾지 않고 바로 코드를 작성할 수 있게 기억해둬야겠다.

 

문제를 풀고나서 알게 된 것인데, split() 메서드도 replaceAll() 메서드처럼 인수로 정규표현식을 받는다. 그래서 이 문제는 굳이 replaceAll()로 하나의 이상의 공백 문자를 하나의 공백 문자로 바꿔주기보다는 split() 메서드만 사용해서도 충분히 풀 수 있는 문제였다.

 

댓글