第二十五课:字符串练习

测试:【 题目描述】

给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
【输入】
一个字符串,长度小于100000。
【输出】
输出第一个仅出现一次的字符,若没有则输出no。
【输入样例】
abcabd
【输出样例】
c

#include <stdio.h>
#include <string.h>
int main()
{
    int letters[26]= {0};
    int len;
    int sum=0;
    int i;
    char ch[10001];
 
    gets(ch);//获取一行字符串
    len=strlen(ch);//求字符串长度
 
    for(i=0; i<len; i++) //桶排的思想统计26个小写字母出现频次
        letters[ch[i]-'a']++;
 
    for(i=0; i<len; i++) //对字符串进行遍历
    {
        if(letters[ch[i]-'a']==1)//如果出现过一次
        {
            printf("%c",ch[i]);//输出字母
            return 0;//结束
        }
    }
    printf("no");
    return 0;
}

例题:基因相关性

【题目描述】
为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。
现比对两条长度相同的DNA序列。定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。
【输入】
有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。
【输出】
若两条DNA序列相关,则输出“yes”,否则输出“no”。
【输入样例】
0.85
ATCGCCGTAAGTAACGGTTTTAAATAGGCC
ATCGCCGGAAGTAACGGTCTTAAATAGGCC
【输出样例】
yes

#include <stdio.h>
#include <string.h>
int main()
{
    char a[500],b[500];
    int i,len,sum=0;
    double thre;
    scanf("%lf\n",&thre);
    gets(a);
    gets(b);
    len=strlen(a);
    for(i=0;i<len;i++)
    {
        if(a[i]==b[i])
        {
            sum++;
        }
    }
    if((double)sum/len>=thre)
    {
        printf("yes");
    }
    else
    {
        printf("no");
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 欢迎关注:oddxix 本章主要讲序列分析与联配 序列分析是生物信息学最主要的研究内容之一,它可以分为两个主要部分...
    oddxix阅读 2,437评论 0 10
  • Blast,全称Basic Local Alignment Search Tool,即"基于局部比对算法的搜索工具...
    晓佥阅读 15,434评论 1 26
  • 序列比较 认识序列 FASTA 格式,第一行是一个大于号“>”开头,后面紧接注释信息 序列相似性 相似的序列》相似...
    leadingsci阅读 19,682评论 3 34
  • 广告组搭建
    四川邻水阅读 348评论 0 1
  • 夏日的阳光驱散了冬的冰凉 踏着春天的风走了十万里 芳菲尽时花色荼靡 我的相思融进了秋月的清朗里 浓烈而疼痛 时光飞...
    程杜阅读 669评论 1 1

友情链接更多精彩内容