C/C++编程学习 - 第9周 ⑤ 字符串判等

题目链接

题目描述

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

输入格式
两行,每行包含一个字符串;字符串长度不超过 100。

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

Sample Input

a A bb BB ccc CCC
Aa BBbb CCCccc

Sample Output

YES

思路

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

我们可以一个字符一个字符的读取,如果是空格就不管,如果是回车就说明该行读取结束。另外,如果是字母就全部将其转化为小写字母,最后再进行比较。

C++代码1:

#include<iostream>
using namespace std;
string a, b;
char c;
int main()
{
    
    
	while(c = getchar())//对第一个字符串进行处理
	{
    
    
		if(c == '\n') break;
		if(c == ' ') continue;
		if(c >= 'A' && c <= 'Z') c += 32;
		a.push_back(c);
	}
	while(c = getchar())//对第二个字符串进行处理
	{
    
    
		if(c == '\n') break;
		if(c == ' ') continue;
		if(c >= 'A' && c <= 'Z') c += 32;
		b.push_back(c);
	}
	if(a == b) cout << "YES" << '\n';
	else cout << "NO" << '\n';
	return 0;
}

C++代码2:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
	char str1[205], str2[205];
	memset(str1, 0, sizeof(str1));
	memset(str2, 0, sizeof(str2));
	gets(str1);
	gets(str2);
	int len1 = strlen(str1), len2 = strlen(str2);
	for(int i = 0; i < len1; i++)
		if(str1[i] >= 97 && str1[i] <= 122) str1[i] -= 32;
	for(int i = 0; i < len2; i++)
		if(str2[i] >= 97 && str2[i] <= 122) str2[i] -= 32;
	int flag = 1, len = max(len1, len2);
	for(int i = 0, j = 0; i < len; i++, j++)
	{
    
    
		while(str1[i] != str2[j])
		{
    
    
			if(str1[i] == ' ') i++;
			else if(str2[j] == ' ') j++;
			else
			{
    
    
				flag = 0;
				break;
			}
		}
		if(flag == 0) break;
	}
	if(flag) cout << "YES" << endl;
	else cout << "NO" << endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44826711/article/details/113095780