어흥

[해커랭크] Anagram (C++) 본문

알고리즘/HackerRank

[해커랭크] Anagram (C++)

라이언납시오 2021. 2. 24. 20:04
728x90
반응형

문제 링크: www.hackerrank.com/challenges/anagram/problem?utm_campaign=challenge-recommendation&utm_medium=email&utm_source=24-hour-campaign

 

Anagram | HackerRank

Find the minimum number of characters of the first string that we need to change in order to make it an anagram of the second string.

www.hackerrank.com

1. 주의할 점

- Alpha[] 배열 초기화 필요

 

2. 구현

- 파라미터로 넘겨받은 S의 길이가 짝수가 아니면 -1을 반환한다

- Alpha[] 배열을 0으로 초기화한다

- S 문자열의 왼쪽 반에 해당되는 문자가 나타난 횟수를 Alpha[] 배열에 저장한다

- S 문자열의 오른쪽 반에 해당되는 문자의 Alpha[]값이 양수면 -1을 하고 0이라면 Cnt++을 통해 바꿔야 할 문자의 수를 증가시킨다

int alpha[26];
// Complete the anagram function below.
int anagram(string s) {
    int len = s.size();
    if(len%2==1) return -1;
    len/=2;
    int cnt=0;
    for(int i=0;i<26;i++)
        alpha[i]=0;
    for(int i=0;i<len;i++)
        alpha[s[i]-'a']++;
    for(int i=len;i<2*len;i++){
        int v = alpha[s[i]-'a'];
        if(v) alpha[s[i]-'a']--;
        else    cnt++;                     
    }
    return cnt;
}
728x90
반응형
Comments