题目来源:http://noi.openjudge.cn/ch0107/17/
17:字符串判等
总时间限制:1000ms 内存限制: 65536kB
描述
判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。
输入
两行,每行包含一个字符串。
输出
若两个字符串相等,输出YES,否则输出NO。
样例输入
a A bb BB ccc CCC
Aa BBbb CCCccc
样例输出
YES
-----------------------------------------------------
解题思路
模拟题,逐字比较时注意两个字符串去掉空格后长度不一样的情况
-----------------------------------------------------
代码
//B:字符串判等
//
//总时间限制: 1000ms 内存限制: 65536kB
//描述
//判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。
//
//输入
//两行,每行包含一个字符串。
//输出
//若两个字符串相等,输出YES,否则输出NO。
//样例输入
//a A bb BB ccc CCC
//Aa BBbb CCCccc
//样例输出
//YES
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
const int len = 10001;
int main()
{
#ifndef ONLINE_JUDGE
ifstream fin("tm201602B.txt");
char s1[len];
fin.getline(s1,len-1);
char s2[len];
fin.getline(s2,len-1);
fin.close();
int i = 0, j = 0;
char ch1,ch2;
bool flag = true;
while(i<len-1 && j<len-1)
{
if (s1[i] == ' ')
{
i++;
continue;
}
if (s2[j] == ' ')
{
j++;
continue;
}
if (s1[i] == '\0' && s2[j] != '\0')
{
cout << "NO";
flag = false;
break;
}
if (s1[i] != '\0' && s2[j] == '\0')
{
cout << "NO";
flag = false;
break;
}
if (s1[i] == '\0' && s2[j] == '\0')
{
break;
}
ch1 = s1[i];
ch2 = s2[j];
if (ch1>='a')
{
ch1 -= 'a'-'A';
}
if (ch2>='a')
{
ch2 -= 'a'-'A';
}
if (ch1 != ch2)
{
cout << "NO";
flag = false;
break;
}
else
{
i++;
j++;
}
}
if (flag)
{
cout << "YES";
}
return 0;
#endif
#ifdef ONLINE_JUDGE
char s1[len];
cin.getline(s1,len-1);
char s2[len];
cin.getline(s2,len-1);
int i = 0, j = 0;
char ch1,ch2;
bool flag = true;
while(i<len-1 && j<len-1)
{
if (s1[i] == ' ')
{
i++;
continue;
}
if (s2[j] == ' ')
{
j++;
continue;
}
if (s1[i] == '\0' && s2[j] != '\0')
{
cout << "NO";
flag = false;
break;
}
if (s1[i] != '\0' && s2[j] == '\0')
{
cout << "NO";
flag = false;
break;
}
if (s1[i] == '\0' && s2[j] == '\0')
{
break;
}
ch1 = s1[i];
ch2 = s2[j];
if (ch1>='a')
{
ch1 -= 'a'-'A';
}
if (ch2>='a')
{
ch2 -= 'a'-'A';
}
if (ch1 != ch2)
{
cout << "NO";
flag = false;
break;
}
else
{
i++;
j++;
}
}
if (flag)
{
cout << "YES";
}
return 0;
#endif
}