알고리즘 분류: 해시맵 문제 링크: https://leetcode.com/problems/isomorphic-strings/description/ 【 문제 】 두 문자열 s와 t가 주어졌을 때, 두 문자열의 형태가 같은 지 판단하는 문제이다. 【 풀이】 s의 각 문자 위치에 해당되는 t의 문자를 map에 저장한다. 이미 저장된 문자가 다른 문자와 매핑되어 있다면 false를 반환한다. t의 문자가 이미 다른 문자에 매핑되어 있다면 false를 반환한다. 시간 복잡도: O(n) 공간 복잡도: O(n) 【 코드】 public class LeetCode_205 { public boolean isIsomorphic(String s, String t) { Map map = new HashMap(); for (in..
알고리즘 분류: 문자열, 파싱 문제 링크: https://leetcode.com/problems/valid-palindrome/description/ 【 문제 】 주어진 문자열이 팰린드롬(가운데를 기준으로 양쪽이 동일한 문자열)인지 확인하는 문제이다. 대소문자를 구분하지 않으며(모두 소문자로), 영문자와 숫자만을 대상으로 한다. 【 풀이 】 문자열을 순회하며 영문자와 숫자만을 StringBuilder에 추가한다. (Character 인터페이스의 isLetterOrDigit 메소드 사용) StringBuilder의 처음과 끝부터 비교하며 팰린드롬 여부를 확인한다. 시간 복잡도: O(n) 공간 복잡도: O(n) 【 코드 】 public class LeetCode_125 { public boolean isPa..
알고리즘 분류: 파싱 문제 링크: https://leetcode.com/problems/is-subsequence/description/ 【 문제 】 문자열 s와 t의 subsequence 인지 확인하는 문제이다. 【 풀이 】 문자열 s와 t의 길이가 0이면 true를 반환한다. 문자열 t를 순회하면서, s의 문자와 같은 문자가 나오면 idx를 증가 시킨다. idx가 s의 길이와 같아지면 s가 t의 subsequence 임을 의미하므로, true를 반환한다. t를 모두 순회했을 때, idx가 s의 길이와 같아지지 않으면 false를 반환한다. 시간 복잡도: O(n) 공간 복잡도: O(1) 【 코드 】 public class LeetCode_392 { public boolean isSubsequence(S..