💻알고리즘

[LeetCode] 392. Is Subsequence

김 진 하 2025. 8. 25. 21:07

문제

두 문자열 s와 t가 주어졌을 때, s가 t의 부분 수열(subsequence)이라면 true를, 그렇지 않다면 false를 반환하세요.
문자열의 부분 수열이란 원본 문자열에서 일부 문자(없을 수도 있음)를 삭제하여 남은 문자들의 상대적인 위치를 변경하지 않고 만든 새로운 문자열을 말합니다. 

예를 들어, "ace"는 "abcde"의 부분 수열이지만, "aec"는 그렇지 않습니다.

 

예시

Input: s = "abc", t = "ahbgdc"
Output: true

Input: s = "axc", t = "ahbgdc"
Output: false

 

Input: s = "aaaaaa", t = "bbaaaa"

Output: false

 

아이디어

public boolean isSubsequence(String s, String t) {
    char[] arrS = s.toCharArray();
    char[] arrT = t.toCharArray();

    StringBuilder result = new StringBuilder();
    int idx = 0;

    for(char c : arrS) {
        for(int j = idx; j < arrT.length; j++) {
            if (c == arrT[j]) {
                idx = j + 1;
                result.append(c);
                break;
            }
        }
    }

    return result.toString().equals(s);
}

1차 결과