ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [알고리즘] 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

    댓글

Designed by Tistory.