LA3213

来源:互联网 发布:mac excel好用吗 编辑:程序博客网 时间:2024/05/29 14:57

题目大意:
找到一个映射 使得两个字符串相同如果可以找到输出YES,反之输出NO

思路:
刚开始以为一定要按顺序一一对应,发现第一组数据答案是错的,后来才知道不一定要按照顺序。 那么只需要计算每个字母的个数,比较字母个数是否一样如果全部一样就可以找得到映射。

代码:

#include <iostream>using namespace std;#include <stdio.h>#include <cstring>#include <map>#include <algorithm>map<char,char> m;char s[1010],str[1010];int count1[1010],count2[1010];int main() {    while(scanf("%s",s)!=EOF) {    //  m.clear();    //  memset(flag,'\0',sizeof(flag));        memset(count1,0,sizeof(count1));        memset(count2,0,sizeof(count2));        scanf("%s",str);        int len = strlen(s);        for(int i = 0; i < len; i++)             count1[s[i] - 'A']++;        for(int i= 0; i < len; i++)            count2[str[i] - 'A']++;        sort(count1,count1 + 26);        sort(count2,count2 + 26);        int k;        for( k = 0 ; k < 26; k++)             if(count1[k] != count2[k])                break;    /*  for(i = 0; i < len; i++) {            if(flag[s[i] - 'A'] == '\0')                flag[s[i] - 'A'] = str[i];            else if(flag[s[i] - 'A'] != str[i])                break;*/    //      cout << flag[s[i]];    //      if(flag[s[i]] == '\0')        //      flag[s[i]] = str[i];    //      else        //      break;        if(k >= 26)            printf("YES\n");        else            printf("NO\n");    }    return 0;}
0 0
原创粉丝点击