测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A24174. 字符串判等

填空题 中等

题目描述

字符串判等

题目描述

判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。

输入

两行,每行包含一个字符串。

输出

若两个字符串相等,输出YES,否则输出NO。

输入样例

a A bb BB ccc CCC
Aa BBbb CCCccc

输出样例

YES

参考答案

#include<bits/stdc++.h> using namespace std; int main() { char s1[105], s2[105]; int l1, l2, i, i1 , i2;//i1, i2:s1与s2转化为新字符串过程中填充字符串时用的下标 cin.getline(s1, 105);//读入带空格的字符串 cin.getline(s2, 105); l1 = strlen(s1); l2 = strlen(s2); for(i = 0, i1 = 0; i < l1; ++i)//把字符串s1转为只有小写字母无空格的字符串 { if(s1[i] >= 'a' && s1[i] <= 'z') s1[i1++] = s1[i]; else if(s1[i] >= 'A' && s1[i] <= 'Z') s1[i1++] = s1[i] + 32; } s1[i1] = '\0'; for(i = 0, i2 = 0; i < l2; ++i)//把字符串s2转为只有小写字母无空格的字符串 { if(s2[i] >= 'a' && s2[i] <= 'z') s2[i2++] = s2[i]; else if(s2[i] >= 'A' && s2[i] <= 'Z') s2[i2++] = s2[i] + 32; } s2[i2] = '\0'; cout << (strcmp(s1,s2) == 0 ? "YES" : "NO"); return 0; }

答案解析


#include<bits/stdc++.h>
using namespace std;
string toNewStr(string s)//将s转化为只由小写字母组成的字符串 
{
    string r;
    for(int i = 0; i < s.length(); ++i)
    {
        if(s[i] >= 'a' && s[i] <= 'z')
            r.push_back(s[i]);
        else if(s[i] >= 'A' && s[i] <= 'Z')
            r.push_back(s[i] + 32);
    }
    return r;
} 
int main()
{
    string s1, s2, ns1, ns2;
    getline(cin, s1);//读入带空格的字符串 
    getline(cin, s2);
    ns1 = toNewStr(s1);//生成新字符串 
    ns2 = toNewStr(s2);
    cout << (ns1 == ns2 ? "YES" : "NO");
    return 0;
}


上一题 下一题