pat——坏键盘

#include <iostream>
#include<string>
using namespace std;


int main()
{
string a1;
string a2;
cin>>a1;
cin>>a2;
bool flag=false;
for(int i=0;i<a1.size();i++)         //+号是坏的 
{
if(a1[i]=='+')
{
flag=true;
break;
}

int i,j; 
bool get;
for(i=0;i<a2.size();i++)
{
get=true;
for(j=0;j<a1.size();j++)
{
if(a2[i]==a1[j])           //如果两个相同 
{
get=false;
break;
}
else if (a2[i] - a1[j] == 32)    //如果是大小写的关系
{
if(isalpha(a2[i])&&isalpha(a1[j]))
{
get=false;
break;
}
}
}
if(get)        //如果不存在上述情况
{
if(flag)     //如果不存在上述情况但是+键坏了
{
if(a2[i]>='A'&&a2[i]<='Z')          
{}
else
cout<<a2[i];

else
{
cout<<a2[i];
}

}
cout<<endl;
return 0;

}


总结:一开始我只写了一个简单的两重for虚循环,其实这是三种情况,而“是否存在+”的这种情况我们可以简单地把它拿出来考虑,因为并不是只要+键坏了就输不出来。我之前也没有想到用一个状态量去代表逐个分析然后分析一个就输出一个,显然,这样是比较方便的。所以在第二个for循环中只考虑两种情况就可以break;(break是跳出当层循环,而continue是结束本次循环,我当时懵逼了),判断完这两种情况之后,再来判断在有+号和无+号情况下的输出。

结论:我真蠢,思维不够严密,虽然知道思路但是写出来往往还是比较麻烦的,要么就又累赘要么就没有考虑完整。。。多写题锻炼思维的严密性吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值