-
[알고리즘] Find All Anagrams in a String알고리즘/배열 2021. 4. 22. 22:48
Problem
Key Point
- 알파벳은 256 자리 배열로 잡는다.
- String.charAt() 함수를 호출하면 해당 알파벳의 ascii 코드 값이 들어간다.
- ascii 코드값에 해당하는 index를 마킹해서 동일한 숫자인지를 판단한다.
두 개의 int 배열이 같은지 비교하는 함수
int[] A = new int[]{1, 2}; int[] B = new int[]{1, 2, 3}; System.out.println("비교 결과 : " + Arrays.equals(A, B));
Code
public List<Integer> solution(String txt, String pat) { List<Integer> result = new ArrayList<>(); // pat 값에 대한 ascii 코드 값을 마킹한 배열을 구한다. int[] patArr = new int[256]; for (int i = 0; i < pat.length(); i++) { patArr[pat.charAt(i)]++; } // pat 사이즈 만큼 txt를 검색하면서 일치하는게 있는지 찾는다. for (int i = 0; i <= txt.length()-pat.length(); i++) { int[] txtArr = new int[256]; for (int j = i; j < i+pat.length(); j++) { txtArr[txt.charAt(j)]++; } if (isEquals(patArr, txtArr)) { result.add(i); } } return result; }
'알고리즘 > 배열' 카테고리의 다른 글
[알고리즘] Spiral Matrix (0) 2021.06.12 [알고리즘] Missing Ranage (0) 2021.06.12 [알고리즘] Find Anagram Mappings (0) 2021.04.22 [알고리즘] Maximum Subarray (0) 2021.04.21 [알고리즘] Longest Substring (0) 2021.04.21