洛谷 4道水题 题解(字符串入门)

题目目录:

No.1 B2109 统计数字字符个数 

No.2 B2110 找第一个只出现一次的字符 

No.3 B2111 基因相关性

No.4 B2113 输出亲朋字符串

OK开始正文!

第一题:B2109 统计数字字符个数

题目描述

输入一行字符,统计出其中数字字符的个数。

输入格式

一行字符串,总长度不超过 255。

输出格式

输出为 1 行,输出字符串里面数字字符的个数。

输入输出样例

输入 #1

Today is 2021-03-27

输出 #1复制

8

思路:

简单到爆炸,遍历一下,统计数字个数,然后输出

AC代码:

#include<bits/stdc++.h>
using namespace std;
signed main()
{
    string s;
    getline(cin,s);
    int cnt=0;
    for(int i=0;i<s.size();i++)
    {
        cnt+=s[i]>='0'&&s[i]<='9';
    }
    cout<<cnt;
    return 0;
}

第二题:B2110 找第一个只出现一次的字符

题目描述

给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出 no

输入格式

一个字符串,长度小于 1100。

输出格式

输出第一个仅出现一次的字符,若没有则输出 no

输入输出样例

输入 #1

abcabd

输出 #1

c

输入 #2

aabbcc

输出 #2

no

思路:

每个字母存一下出现次数,然后遍历一下次数,如果有1直接输出,return 0,最后输出no

AC代码:

#include<bits/stdc++.h>
using namespace std;
int cnt[30];
signed main()
{
    string s;
    cin >> s;
    for(int i=0;i<s.size();i++)
    {
        cnt[s[i]-'a']++;
    }
    for(int i=0;i<s.size();i++)
    {
        if(cnt[s[i]-'a']==1)
        {
            cout<<s[i];
            return 0;
        }
    }
    cout<<"no";
    return 0;
}

第三题:B2111 基因相关性

题目描述

为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的 DNA 进行比对,以判断该比对的 DNA 是否具有相关性。

现比对两条长度相同的 DNA 序列。首先定义两条 DNA 序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条 DNA 序列是相关的,否则不相关。

输入格式

有三行,第一行是用来判定出两条 DNA 序列是否相关的阈值,随后 2 行是两条 DNA 序列(长度不大于 500)。

输出格式

若两条 DNA 序列相关,则输出 yes,否则输出no

输入输出样例

输入 #1

0.85
ATCGCCGTAAGTAACGGTTTTAAATAGGCC
ATCGCCGGAAGTAACGGTCTTAAATAGGCC

输出 #1

yes

思路:

输入之后统计两个字符串有多少个字符相同,然后做个计算,比较一下即可

AC代码:

#include<bits/stdc++.h>
using namespace std;
signed main()
{
    string s1,s2;
    double d;
    cin >> d;
    cin >> s1 >> s2;
    double cnt=0;
    for(int i=0;i<s1.size();i++)
    {
        cnt+=s1[i]==s2[i];
    }
    cnt/s1.size()>=d?cout<<"yes":cout<<"no";
    return 0;
}

第四题:B2113 输出亲朋字符串

题目描述

亲朋字符串定义如下:给定字符串 s 的第一个字符的 ASCII 值加第二个字符的 ASCII 值,得到第一个亲朋字符;s 的第二个字符加第三个字符得到第二个亲朋字符;依此类推。注意:亲朋字符串的最后一个字符由 ss 的最后一个字符 ASCII 值加 s 的第一个字符的 ASCII 值。

输入格式

输入一行,一个长度大于等于 2,小于等于 100 的字符串。

输出格式

输出一行,为变换后的亲朋字符串。输入保证变换后的字符串只有一行。

输入输出样例

输入 #1

1234

输出 #1

cege

思路:

依题意模拟就好

AC代码:

#include<bits/stdc++.h>
using namespace std;
signed main()
{
    string s1;
    cin >> s1;
    for(int i=0;i<s1.size()-1;i++)
    {
        cout<<char(s1[i]+s1[i+1]);
    }
    cout<<char(s1[s1.size()-1]+s1[0]);
    return 0;
}

这篇博客就到这里啦,我们下篇博客见!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值