题目目录:
No.1 B2117 整理药名
No.2 B2118 验证子串
No.3 B2119 删除单词后缀
OK,开始正文!
第一题:B2117 整理药名
题目描述
医生在书写药品名的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果是字母要大写,其他字母小写。
如将 ASPIRIN 、 aspirin 整理成 Aspirin。
输入格式
第一行一个数字 n,表示有 n 个药品名要整理,n 不超过 100。
接下来 n 行,每行一个单词,长度不超过 20,表示医生手书的药品名。
药品名由字母、数字和 - 组成。
输出格式
n 行,每行一个单词,对应输入的药品名的规范写法。
输入输出样例
输入 #1复制
4 AspiRin cisapride 2-PENICILLIN Cefradine-6
输出 #1复制
Aspirin Cisapride 2-penicillin Cefradine-6
思路:
输入字符串,然后如果第一个字符是小写转成大写,后面如果是大写转成小写
AC代码:
#include<iostream>
using namespace std;
signed main()
{
int n;
cin >> n;
while(n--)
{
string s;
cin >> s;
for(int i=0;i<s.size();i++)
{
if(i==0)
{
if(s[i]>='a'&&s[i]<='z')
{
s[i]-=32;
}
}
else
{
if(s[i]>='A'&&s[i]<='Z')
{
s[i]+=32;
}
}
}
cout<<s<<'\n';
}
return 0;
}
第二题:B2118 验证子串
题目描述
输入两个字符串,验证其中一个串是否为另一个串的子串。
输入格式
两行,每行一个字符串。
输出格式
若第一个串 s1 是第二个串 s2 的子串,则输出(s1) is substring of (s2)
;
否则,若第二个串 s2 是第一个串 s1 的子串,输出(s2) is substring of (s1)
;
否则,输出 No substring
。
输入输出样例
输入 #1
abc dddncabca
输出 #1
abc is substring of dddncabca
输入 #2
aaa bbb
输出 #2
No substring
说明/提示
对于 100% 的数据,字符串长度在 20 以内。
思路:
用上find函数,如果s1.find(s2)!=s::npos(写-1也行),那么s2就是s1的子串
AC代码:
#include<iostream>
using namespace std;
signed main()
{
string s1,s2;
cin >> s1 >> s2;
if(s1.find(s2)!=-1)
{
cout<<s2<<" is substring of "<<s1;
}
else if(s2.find(s1)!=-1)
{
cout<<s1<<" is substring of "<<s2;
}
else
{
cout<<"No substring";
}
return 0;
}
第三题:B2119 删除单词后缀
题目描述
给定一个单词,如果该单词以 er
、 ly
或者 ing
后缀结尾,则删除该后缀(题目保证删除后缀后的单词长度不为 0),否则不进行任何操作。
输入格式
输入一行,包含一个单词(单词中间没有空格,每个单词最大长度为 32)。
输出格式
输出按照题目要求处理后的单词。
输入输出样例
输入 #1
referer
输出 #1
refer
思路:
这里有个坑,就是如果长度不足2的话,直接substr会出bug!(不会SF,但是没有输出)所以要特判一下
AC代码:
#include<iostream>
using namespace std;
signed main()
{
string s,suf1="",suf2="";
cin >> s;
if(s.size()>2)
{
suf1=s.substr(s.size()-2,2);
}
if(s.size()>3)
{
suf2=s.substr(s.size()-3,3);
}
if(suf1=="er"||suf1=="ly")
{
s=s.substr(0,s.size()-2);
}
else if(suf2=="ing")
{
s=s.substr(0,s.size()-3);
}
cout<<s;
return 0;
}
这篇博客就到这里啦,我们下篇博客见!