加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

字符串基础题一

(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;
}

五)openjudge  统计数字字符个数
输入一行字符,统计出其中数字字符的个数。
输入
    一行字符串,总长度不超过255。
输出
    输出为1行,输出字符串里面数字字符的个数。
样例输入
    Peking University is set up at 1898.
样例输出
    4
using namespace std;
 int main() 
   
        char c    =getchar(); 
        int cnt=0;
        while( c!=-1) //若读入的字符不是回车 
       
            if(c>=48 &&c<=57)    cnt++; 
                  =getchar();
       
        cout<<cnt;   
   


六)找第一个只出现一次的字符
    给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入    一个字符串,长度小于100000。
输出    输出第一个仅出现一次的字符,若没有则输出no。
样例输入
    abcabd
样例输出
    c
using namespace std;
char s[100001];
int a[150];
int main()
{
    gets(s);  
    memset(a,0,sizeof(a));
    int x=strlen(s);
    for(int i=0;i < x;i++)    a[s[i]]++;
    for (int i=0;i < x;i++)
        if (a[s[i]]==1)
        {
            putchar(s[i]);
            return 0;
        }
    cout<<"no";
    return 0;
}

七)openjudge基因相关性
    为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。
    现比对两条长度相同的DNA序列。首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。
输入
    有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。
输出
    若两条DNA序列相关,则输出“yes”,否则输出“no”。
样例输入
    0.85
    ATCGCCGTAAGTAACGGTTTTAAATAGGCC
    ATCGCCGGAAGTAACGGTCTTAAATAGGCC
样例输出
    yes
using namespace std;
int main(){
    char s1[505],s2[505];
    double x;
    cin>>x>>s1>>s2;
    int cnt=0;
    for(int i=0;i
        if(s1[i]!=s2[i]) cnt++;
        double diff=(double)cnt/strlen(s1);
    if( diff <= (1-x)) cout<<"yes";
    else cout<<"no";
    }

八)P112.4.3.6.字符串排整
输入一个字符串,把指定的第一字符排最左面,第二个字符排其次,其他排在右边;
输入输出:第一行是字符串s,第二行是指定的第一第二个字符;
输入样例:
RBRBWWRBBR
R W
输出样例:
RRRRWWBBBB


0

阅读 收藏 喜欢 打印举报/Report
前一篇:排序基础题一
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有