2023년 02월 05일 일요일 - 주말은 너무 빠르다...
오늘 올려볼 문제는 438번 Find All Anagrams in a String 이라는 문제이다.
사진을 클릭하면 해당 문제로 이동합니다.
오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.
오늘도 풀었던 문제네?
입력
사진에서도 볼 수 있듯이 String 2개가 입력으로 들어온다.
풀이 및 코드
p의 anagram이 s의 substring으로 포함하고 있으면 해당 substring들의 모든 시작 index를 구하는 문제이다.
오늘은 처음부터 정답을 생각해냈다.
오늘도 그저 윈도우 슬라이드만 사용하면 문제가 풀린다...
이제 코드를 봐보자!
풀이코드
class Solution {
public List<Integer> findAnagrams(String s, String p) {
var result = new ArrayList<Integer>();
if(s.length() < p.length()) return result;
var arr = new int[26];
int n = p.length(), sum = n;
for(var c : p.toCharArray()) arr[c - 'a']++;
for(int i = 0; i < n; i++) if(arr[s.charAt(i) - 'a']-- > 0) sum--;
if(sum == 0) result.add(0);
for(int i = n; i < s.length(); i++) {
if(arr[s.charAt(i) - 'a']-- > 0) sum--;
if(++arr[s.charAt(i - n) - 'a'] > 0) sum++;
if(sum == 0) result.add(i - n + 1);
}
return result;
}
}
제출 화면
갑자기 풀었었던 문제가 많이 나오네..?
내가 문제를 많이 푼건지 아니면 리트코드가 조금 중복해서 내는건지..?
내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.
'LeetCode 문제 풀이' 카테고리의 다른 글
[LeetCode] 904번 Fruit Into Baskets 문제를 풀어보았다. (ft. java) (0) | 2023.02.07 |
---|---|
[LeetCode] 1470번 Shuffle the Array 문제를 풀어보았다. (ft. java) (0) | 2023.02.07 |
[LeetCode] 567번 Permutation in String 문제를 풀어보았다. (ft. java) (0) | 2023.02.05 |
[LeetCode] 6번 Zigzag Conversion 문제를 풀어보았다. (ft. java) (0) | 2023.02.04 |
[LeetCode] 953번 Verifying an Alien Dictionary 문제를 풀어보았다. (ft. java) (0) | 2023.02.02 |