1.简单描述
可多次测试输入,先输入一个数字,规定需要判断几组句子,输入这组中各句子单词数,判断二者首字母缩写是否相同。
2.思路
输入字符串,将大写首字母存入动态数组,然后比较两句话的缩写是否相同。思路很简单,但写起来复杂,而且改了好多遍才能得出样例输出。
错误做法
#include <iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
vector<char>v;
vector<char>e;
int i,n;
cin>>n;
for(i=1;i<=n;i++)
{
int p,q;
string s1,s2;
cin>>p;
getline(cin,s1);//用法错误
cin>>q;
getline(cin,s2);
if(p!=q)cout<<"DIFFERENT"<<endl;
else
{
for(i=0;i<p;i++)
{
if(char(s1[i])<='Z'&&char(s1[i])>='A')
v.push_back(char(s1[i]));
if(char(s2[i])<='Z'&&char(s2[i]>='A'))
e.push_back(char(s2[i]));
if(e[i]!=v[i]){cout<<"DIFFERENT"<<endl;break;}
}
for(i=0;i<p;i++)
if(v[i]==e[i]) cout<<"SAME"<<endl;
}
}
return 0;
}
这个太过复杂,我参考了答案的思路,利用string函数的串连接和串比较,思路清晰多了。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a,aa,aaa;
int b,m,n,i,j;
cin>>b;
for(i=0;i<b;i++)
{
cin>>m;
for(j=0;j<m;j++)
{
cin>>a;
aa+=a[0]; //将首字母串连接存入
}
cin>>n;
for(j=0;j<n;j++)
{
cin>>a;
aaa+=a[0];
}
if(aa.compare(aaa)==0) //串比较
cout<<"SAME"<<endl;
else cout<<"DIFFERENT"<<endl;
aa="";
aaa=""; //清空
}
return 0;
}
3.体会
很多问题直接利用string函数会简单得多
输出的单词拼写错,找了好久的wa在哪,注意细节。