【基础】喜羊羊运动会——眼力大比拼

【基础】喜羊羊运动会——眼力大比拼

img


题目为上图,各位帮帮我!我不会这一题

#include <bits/stdc++.h>
using namespace std;

int main()
{
     ios::sync_with_stdio(0);
    string s1,s2;
    int s=0,ss=0,a1[26],a2[26];
    cin>>s1>>s2;
    if(s1.size()>s2.size())
    {
        for(int i=0;i<s2.size();i++)
    {
        if(islower(s2[i]))a1[s2[i]]=1;
    }
        for(int i=0;i<s2.size();i++)
        {
            if(s2[i]==s1[i])
            {
                s++; 
            }
        
        }
    }else if(s1.size()<s2.size())
    {
        for(int i=0;i<s1.size();i++)
        {
            if(s1[i]==s2[i])
            {
                s++;
            }
        
        }
        for(int i=0;i<s1.size();i++)
    {
        if(islower(s1[i]))a2[s1[i]]=1;
    }
    }
    for(char i='a';i<='z';i++)
    {
        for(char j='a';j<='z';j++)
    {
        if(a1[i]==a2[j])
        {
        ss++;
          continue;
        }
      
    }
    }
    cout<<ss<<" "<<s<<endl;
    return 0;

错在哪了。

  1. a1[26]和a2[26]均为int型数组,而s1[i]和s2[i]均为Char,所以a1[s2[i]]和a2[s1[i]]均无意义
  2. islower用来检测是否为小写字母,题目显示输入均为大写字母,此处islower函数无意义
  3. 最后for循环比较添加ss处,同问题1,char型i和j不能作为int型数组的元素
  4. 求ss的方法有误,在if语句中,只有a1或a2中的一个会变化,另一个不会,需修改
  5. 求ss可直接将s1和s2排序后比较前x个值有多少相等,x为s1和s2长度小的值