문제
두 문자열 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차 결과

'💻알고리즘' 카테고리의 다른 글
| [LeetCode] 443. String Compression (0) | 2025.09.02 |
|---|---|
| [LeetCode] 334. Increasing Triplet Subsequence (0) | 2025.09.01 |
| [LeetCode] 238. Product of Array Except Self (4) | 2025.08.25 |
| [LeetCode] 151. Reverse Words in a String (0) | 2025.08.25 |
| [LeetCode] 345. Reverse Vowels of a String (0) | 2025.08.25 |