最近在学C++,做到了两个很像的题目。
那么话不多说,直接上题目和代码!
第一题:字符串相同计数
题目描述
输入一个字符串 a, 以及 (1<<300)n(1<n<300) 个字符串, 输出与字符串 a, 相同的字符串的个数
输入格式
第一行输入一个字符串 a 。
第二行输入一个整数 (1≤300)n(1≤n≤300) ,表示接下来待输入字符串的数量。
接下来的 n 行,每行输入一个字符串。
输出格式
输出一个整数,表示与字符串 a 相同的字符串个数
代码:
#include<iostream>
#include<string>
using namespace std;
string s1, s2;
int main(){
cin >> s1;
int n, cnt = 0;
cin >> n;
for(int i = 1; i <= n; i++){
cin >> s2;
if(s2 == s1){
cnt++;
}
}
cout << cnt;
return 0;
}
第二题:统计单词个数
题目描述
你拿到一本单词簿,现需要统计与单词 a 相同的单词的个数 (忽略大小写)
输入格式
输入一个数字 n ,表示单词簐的单词个数 (1≤1000(1≤n≤1000 )
输入 n 行单词,表示单词簿中的单词
输入一行字符串 a ,表示需要查找的单词
输出格式
输出一个数字 x ,表示单词泘中有 x 个与 a 相同的单词,如果不存在,则输出 -1
代码:
#include<iostream>
#include<string>
using namespace std;
string s1, s2[1010];
void zhuan(string &s){
int len1 = s.size();
for (int i = 0; i < len1; i++){
if(s[i] >= 'a' && s[i] <= 'z'){
s[i] = s[i] - 'a' + 'A';
}
}
}
int main(){
int x, cnt = 0;
cin >> x;
for(int i = 1; i <= x; i++){
cin >> s2[i];
zhuan(s2[i]);
}
cin >> s1;
zhuan(s1);
for(int i = 1; i <= x; i++){
if(s2[i] == s1){
cnt++;
}
}
if(cnt == 0){
cout << "-1";
}else{
cout << cnt;
}
return 0;
}
注意:这一题和上一题不太一样,第一题是可以直接输入就比较(因为已经提前知道要比较的字符串了,所以直接比较),第二题却要先保存再比较(因为在输入将要比较的字符串时,还不知道需要对比的字符串是什么,所以要先保存在比较),作者写代码时疯狂踩雷,各位注意一下。
这是我的解题思路和代码,欢迎各位大佬指点!
大佬们互三互三!