zoukankan      html  css  js  c++  java
  • UVA

    /*
      这题的关键是,既然可以一一映射,只要统计字符串中每个字母的出现次数并比较
      
      也就是说,只要a串中的每一个次数,都能找到b串的一个次数和它相等即可
      (但要注意不可重复,也就是说,a串中只有2个字母出现50次,b串也要恰好2个字母出现50次,不能多也不能少)
      
      ...至于到底是哪个字母出现50次,既然可以映射,哪个字母就不重要了,我们不需要关心这点...
    */


    #include <iostream>
    #include <cstring>
    #include <algorithm>
    const int maxn = 110;
    const int check = 26;
    using namespace std;
    char a[maxn], b[maxn];
    int na[check], nb[check];
    
    int main()
    {
    	while (cin >> a >> b)
    	{
    		int len = strlen(a);
    		//na和nb每次用前都要先清零,这点十分重要!!!
    		memset(na, 0, sizeof(na));
    		memset(nb, 0, sizeof(nb)); 
    		for (int i = 0; i < len; i++)
    		{
    			na[a[i] - 'A']++;
    			nb[b[i] - 'A']++;
    		}
    		
    		sort(na, na+check);
    		sort(nb, nb+check);
    		bool flag = true;
    		
    		for (int i = 0; i < check; i++)
    		{
    			if (na[i] != nb[i])
    			{
    				flag = false;
    				break;
    			}
    		}
    		
    		if (flag) cout << "YES" << endl;
    		else cout << "NO" << endl;
    			
    	}
    	return 0;
    }


  • 相关阅读:
    CF754A
    快速幂模板
    循环-21. 求交错序列前N项和(15)
    循环-20. 猜数字游戏(15)
    循环-19. 币值转换
    循环-18. 龟兔赛跑(20)
    循环-17. 简单计算器(20)
    循环-11. 水仙花数(20)
    IO 分支 循环
    check list
  • 原文地址:https://www.cnblogs.com/mofushaohua/p/7789528.html
Copyright © 2011-2022 走看看