zoukankan      html  css  js  c++  java
  • 蓝桥杯 试题 算法训练 Anagrams问题

    资源限制
    时间限制:1.0s 内存限制:512.0MB


    问题描述

      Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。


    输入格式

    输入有两行,分别为两个单词。


    输出格式

    输出只有一个字母Y或N,分别表示Yes和No。


    样例输入

    Unclear
    Nuclear


    样例输出

    Y


    方法一、

    #include<iostream>
    #include<string>
    #include<cctype>
    using namespace std;
    
    int main(){
        string s1,s2;
        cin>>s1>>s2;
        if(s1.length()!=s2.length()) {
            cout<<'N'<<endl;
            return 0;
        }
        int f[26]={0};
        for(int i=0;i<s1.size();i++) { //判断两个单词包含的26个英文字母(不区分大小写)的数量是否相同 
            f[tolower(s1[i])-'a']++;
            f[tolower(s2[i])-'a']--;
        }
        for(int i=0;i<26;i++)
            if(f[i]!=0) {
                cout<<'N'<<endl;
                return 0;
            }
        cout<<'Y'<<endl;
        return 0;
    }

    方法二、

    #include<iostream>
    #include<algorithm> 
    #include<string>
    #include<cctype>
    using namespace std;
    
    string f(string &s)
    {
        string ans=s;
        for(int i=0;i<ans.length();i++)
            ans[i]=tolower(ans[i]);
        sort(ans.begin(),ans.end()); 
        return ans;
    }
    
    int main()
    {
        string s1,s2; 
        cin>>s1>>s2;
        if(s1.length()!=s2.length())
            cout<<'N'<<endl;
        if(f(s1)==f(s2)) //排序后直接比较是否相等 
            cout<<'Y'<<endl;
        else cout<<'N'<<endl;
        return 0;
    }
  • 相关阅读:
    [导入]动态内存管理
    再看一个直播帖子,一个上午混没了
    这个帖子不错
    基于STM32 8通道ADC采样实现源代码(转) 以后设计参考使用
    天气基本恢复正常,可以玩了
    开始学习了
    安静的看了2天书
    慎度职场“35危机”
    书买了,估计这个星期就到了
    C语言循环的小艺术(转)
  • 原文地址:https://www.cnblogs.com/love-ziji/p/13419757.html
Copyright © 2011-2022 走看看