본문 바로가기
알고리즘

[알고리즘] Valid Anagram

by keel_im 2021. 1. 21.
반응형

포인트

1. Anagram 인지를 확인을 하는 알고리즘

2. 본인은 이 문제를 풀때 정렬을 하고 순회를 하여 요소가 다르면 다르 Anagram 인지를 판단하는 메소드를 작성을 하였습니다. 하지만, 이는 불필요할 수 있기 때문에 해시 적인 요소를 사용한 코드가 있어서 그것을 토대로 수정을 하였습니다. 

🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다. 

c++

class Solution {
public:
    bool isAnagram(string s, string t) {
        sort(s.begin(), s.end());
        sort(t.begin(), t.end());
        
        if(s.size()!=t.size()) return false;
        
        for(int i=0; i<s.size(); i++){
            if(s[i]!=t[i]) return false;
        }
        
        return true;
        
    }

    bool isAnagram2(string s, string t){
        if(s.size()!=t.size()) return false;

        int counter[26] = {0,};

        for(int i=0; i<s.size(); i++){
            counter[s[i]-'a']+=1;
            counter[t[i]='a']-=1;
        }

        for(auto ele : counter){
            if(ele!=0) return false;
        }
        
        return true;
    }
};

python

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        a = list(s)
        b = list(t)
        a.sort()
        b.sort()
        
        if(len(a)!=len(b)):
            return False
        
        for i in range(len(a)):
            if(a[i]!=b[i]):
                return False
            
        return True

    def isAnagram2(self, s: str, t: str) -> bool:
        counter =[0 for _ in range(26)]

        for i in range(len(s)):
            counter[s[i]-'a']+=1
            counter[t[i]-'a']-=1

        for ele in counter:
            if(ele!=0):
                return False
        return True  
    
반응형

'알고리즘' 카테고리의 다른 글

[알고리즘] 핸드폰 번호 가리기  (0) 2021.01.22
[알고리즘] Valid Parentheses  (0) 2021.01.21
[알고리즘] Contains Duplicate  (0) 2021.01.21
[알고리즘] Reverse String  (0) 2021.01.21
[알고리즘] Shuffle the Array  (0) 2021.01.19

댓글