ANAGRAM질문입니다.

  • RexPark
    RexPark
    // a = 97, z = 122
    
    #include <stdio.h>
    
    #include <string.h>
    
    int main(void)
    {
    
        int numberOfCaseT;
        char firstChar[100][100], secChar[100][100];
        int engBasicFirst[26], engBasicSec[26];
        int firstLen[100], secLen[100];
    
    
        scanf("%d",&numberOfCaseT);
        int i;
        for(i=0;i<numberOfCaseT;i++){
            scanf("%s %s", &firstChar[i], &secChar[i]);
        }
    
        for(i=0; i<numberOfCaseT;i++){
    
            int j, k = 0;
    
        firstLen[i] = strlen(firstChar[i]);
        secLen[i] = strlen(secChar[i]);
            if(strcmp(firstChar[i], secChar[i])==0){
            printf("No.\n");
            }
        else if(firstLen[i]!=secLen[i]){
            printf("No.\n");
        }else{
            for(j=0;j<firstLen[i];j++){
                engBasicFirst[firstChar[i][j]-97]++;
                engBasicSec[secChar[i][j]-97]++;
            }
            k =0;
            while(k<27){
                if(engBasicFirst[k]!=engBasicSec[k]){
                    printf("No.\n");
                    break;
                }
                k++;
            }if(k==27){
                printf("Yes\n");
            }
    
        }
    
        }
    
        return 0;
    
    }
    

    영어 순서 배열을 만들어 읽어드린 영어 문자열을 해당 알파벳의 위치에 1씩 + 시켜 결과값을 비교하는 알고리즘을 만들었습니다.

    예를들어

    Apple 같은경우

    engBasicFirst
    [0][1][2][3][4]...[l번째]...[p번째]
    1 0 0 0 1 .... 1 ... 2

    제가 뽑은 결과값은 맞게 나오는데
    오류로 나오는 이유를 모르겠네요 .ㅠㅠ

    똑같은 문자열이면 No. 를 출력하도록 설정해도 오류가납니다
    도와주세요!!


    8년 전
0개의 댓글이 있습니다.
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.