字符串基础题一
(2019-01-24 08:23:58)分类: 高精度字符串 |
一)openjudge过滤多余的空格
一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。
输入
一行,一个字符串(长度不超过200),句子的头和尾都没有空格。
输出
过滤之后的句子。
样例输入
Hello
world.This is
c language.
样例输出
Hello
world.This is c language.
参考程序:
using namespace std;
char st[200];
int main(){
while(cin>>st) cout<<st<<" ";
return
0;
}
二)ss1058国家名排序
对给定的10个国家名,按其字母的顺序输出
输入
输入10个国家名,一行一个
输出
输出10个国家名,一行一个
样例输入
France
Germany
Japan
America
Canada
India
Britain
Australia
Italy
Spain
样例输出
America
Australia
Britain
Canada
France
Germany
India
Italy
Japan
Spain
参考程序:
using namespace std;
int main()
{
char
t[21],cname[11][21];
for(int
i=1;i<=10;++i) gets(cname[i]);
for(int
i=1;i<=9;++i)
{
int
k=i;
for(int
j=i+1;j<=10;++j)
if(strcmp(cname[k],cname[j])>0) k=j;
strcpy(t,cname[i]);
strcpy(cname[i],cname[k]);
strcpy(cname[k],t);
}//end
for
for(int
i=1;i<=10;++i) cout<<cname[i]<<endl;
return
0;
}
三)openjudge字符串判等
判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。
输入
两行,每行包含一个字符串。
输出
若两个字符串相等,输出YES,否则输出NO。
样例输入
a A bb BB
ccc CCC
Aa BBbb
CCCccc
样例输出
YES
using namespace std;
const int N=256;
char s1[N],s2[N],a[N],b[N];
int l1,l2;
void strlr(char *s){
for(int
i=0;i < strlen(s);i++)
if(s[i]>='A' && s[i]<='Z') s[i]+=32;
}
int main(){
gets(s1),gets(s2);
strlr(s1),strlr(s2);
for(int
i=0;i < strlen(s1);i++)
if(s1[i]!=' ') a[l1++]=s1[i];
for(int
i=0;i < strlen(s2);i++)
if(s2[i]!=' ') b[l2++]=s2[i];
if(strcmp(a,b)==0) printf("YES\n");
else
printf("NO\n");
return
0;
}
四)openjudge字符串移位包含问题
对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。
给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。
输入
一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过30。
输出
如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出true,否则输出false。
样例输入
AABCD
CDAA
样例输出
true
using namespace std;
const int N=61;
char s1[N],s2[N],x[N],t[N];
int l1,l2;
int main(){
scanf("%s%s",&s1,&s2);
if(strlen(s1) < strlen(s2)){
strcpy(t,s1);strcpy(s1,s2),strcpy(s2,t);
}
strcpy(x,s1);
strcat(s1,x);
if(strstr(s1,s2)==NULL) printf("false\n");
else
printf("true\n");
return
0;
输入
输出
样例输入
样例输出
参考程序:
using namespace std;
char st[200];
int main(){
}
二)ss1058国家名排序
对给定的10个国家名,按其字母的顺序输出
输入
输入10个国家名,一行一个
输出
输出10个国家名,一行一个
样例输入
France
Germany
Japan
America
Canada
India
Britain
Australia
Italy
Spain
样例输出
America
Australia
Britain
Canada
France
Germany
India
Italy
Japan
Spain
参考程序:
using namespace std;
int main()
{
三)openjudge字符串判等
输入
输出
样例输入
样例输出
using namespace std;
const int N=256;
char s1[N],s2[N],a[N],b[N];
int l1,l2;
void strlr(char *s){
int main(){
四)openjudge字符串移位包含问题
输入
输出
样例输入
样例输出
using namespace std;
const int N=61;
char s1[N],s2[N],x[N],t[N];
int l1,l2;
int main(){