#include<iostream>
#include<string>
using namespace std;
int main()
{
string arr1, arr2;
int a = 0, b = 0;
getline(cin, arr1);
getline(cin, arr2);
for (int i = 0; i < arr1.size(); i++)
{
if (arr1[i] >= 90 && arr1[i] <= 122)
arr1[i] -= 32;
}
for (int i = 0; i < arr2.size(); i++)
{
if (arr2[i] >= 90 && arr2[i] <= 122)
arr2[i] -= 32;
}
while (a<=arr1.size()&&b<=arr2.size())
{
while (arr1[a] != ' ' && arr2[b] != ' ')
{
if (arr1[a] == arr2[b])
{
a++;
b++;
}
else
{
cout << "NO" << endl;
return 0;
}
}
if (arr1[a] = ' ')
a++;
if (arr2[b] = ' ')
b++;
}
cout << "YES" << endl;
return 0;
}
修改1:
看报错是字符串下标问题
白窗口表示你的程序崩溃了,有异常
把
while (arr1[a] != ' ' && arr2[b] != ' ')
改成
if (arr1[a] != ' ' && arr2[b] != ' ')
因为是while的话
arr1[a]和 arr2[b]就会越界,因为a++和b++在第二个while里面,一直没跳出循环去判断a是不是比arr1.size()小。
当a=2的时候就崩溃了。
因为arr1[0]=A, arr2[0]=A
arr1[1]和arr2[1]是\0的结束.
所以arr1[2]的时候就越界了
谢邀请
白窗口就是程序崩溃了,解决办法见楼上的
while (a<=arr1.size()&&b<=arr2.size())
改为
while (a<arr1.size()&&b<arr2.size())
试试看
“多一少一”问题占程序员常犯错误的10%以上!
避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断,掰手指头心算验证一下程序到底应该写为
x、x-1、x+1中的哪个?
<、<=、==、>、>=中的哪个?