测试:【 题目描述】
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出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;
}