字符串排序
作者: ZhouMingLiang
时间限制: 1s
章节: 字符串
问题描述
明明刚刚开始学英文,对于26个英文字母的顺序总是记不住,每次默写英文字母的时候,顺序总是前后颠倒。明明的爸爸对此相当着急,想有没有很好的办法来帮助明明记住字母的顺序。一天,明明的爸爸突然想到了一个游戏,能够帮助明明记住英文字母。这个游戏如下,给明明一个任意长度的英文字串,其中只包含小写字母,然后让明明对字符串中的字母排序,然后再把排完序的字符串写出来,如果连续写对10次的话,明明的爸爸就会奖励他,带他出去吃KFC。 例如:有一个字符串为asdf,经过排序后的字符串就是adfs。 明明显然对这个游戏非常感兴趣(其实明明更感兴趣的是那顿KFC),接受了他爸爸的提议,玩起了这个游戏。但是明明的爸爸在出题目考明明的时候,自己却犯了难,用英文随便写出一个无序的英文字符串是很简单的,但是排序的话却要费一些功夫,而且还不能出错,否则就无法知道明明做的对不对了。于是明明的爸爸请你帮忙,帮他写一个排序程序,来输出排序后的字符串。
明明爸爸的问题可以归结为:输入一行字符串,全部由小写字母构成,对字符串按26个英文字母的先后顺序进行排序,然后输出。
输入说明
你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅占一行,每行由一个字符串组成,字符串中只包含小写字母,字符串的长度不超过100个字符。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。
输出说明
对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个排序后的字符串。每组运算结果单独形成一行数据,其行首和行尾都没有任何空格,每组运算结果与其后一组运算结果之间没有任何空行,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。
个人总结
1、sort 并不是只能对整数类型进行排列 ------ 无论是 C++ 标准库的std::sort,还是其他编程语言中的排序函数,本质上都是对可比较的元素进行排序,字符、字符串、自定义类型等只要能比较大小,都可以用sort排序。
sort 的核心是比较元素的大小关系,而不是限制元素的类型。只要两个元素能通过<、>等运算符比较出 "谁大谁小",sort 就能对它们排序。
代码
cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
char arr[101]={0};
while(cin>>arr){
int len=strlen(arr);
sort(arr,arr+len);
cout<<arr<<endl;
}
}
回文问题
作者: 朱星垠
时间限制: 1s
章节: 字符串
问题描述
输入一串字符,其长度小于200,判断该串字符是否构成回文。 所谓回文是指从左到右和从右到左读一串字符的值是一样的,如:ABCBA。
输入说明
你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组输入数据由一行字符组成,它们之间没有空格,在行首和行尾没有多余的空格。
输出说明
对每组测试数据,你的程序需要向标准输出设备(通常为启动该程序的终端)依次输出一组对应的答案:构成回文的输出Yes ,反之输出 No。所有数据前后没有多余的空格,两组数据之间也没有多余的空行。
个人总结
1、直接除2
代码
cpp
#include <bits/stdc++.h>
using namespace std;
int judge(char arr[]){
int len=strlen(arr);
int mark=1;
for(int i=0;i<len/2;i++){
if(arr[i]!=arr[len-1-i]) mark=0;
}
return mark;
}
int main(){
char arr[101]={0};
while(cin>>arr){
if(judge(arr)) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
字符串中找整数
作者: zzp
时间限制: 1s
章节: 字符串
问题描述
对于一个字符串,编程找出其中的所有整数。例如,字符串"a12bc34d05",其中有整数12、34、5。
输入说明
程序输入包括多行,每一行都是一串字符,字符串长度不超过500。字符串中的字符只有字母与数字。
输出说明
程序输出为多行,每行第一个数代表所对应的字符串中整数的总个数。紧跟其后的依次是每个整数,数和数之间有一个空格。行与行之间没有多余空行,行首行尾没有多余空格。
个人总结
1、没有注意看输出说明

代码
cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
char arr[501]={0};
while(cin.getline(arr,501)){
int k=0;
int shu[500]={0};
int count=0;
while(arr[k]!='\0'){
int curnum=0;
if(!(arr[k]>='0'&&arr[k]<='9')) k++;
else{
while((arr[k]>='0'&&arr[k]<='9')&&arr[k]!='\0'){
curnum=curnum*10+(arr[k]-'0');
k++;
}
shu[count++]=curnum;
}
}
if(count==0) cout<<"0";
else cout<<count<<" ";
for(int i=0;i<count;i++){
if(i>0) cout<<" ";
cout<<shu[i];
}
cout<<endl;
}
}