笔试练习day16

QR6 字符串替换(简单)(模拟)

字符串替换_牛客题霸_牛客网 (nowcoder.com)

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 原串
     * @param arg char字符型vector 需替换数组
     * @return string字符串
     */
    string formatString(string str, vector<char>& arg) {
        int k=str.find('%'); 
        int i=0;
        while(k!=-1)
        {
            str[k]=arg[i++];
            str.erase(k+1,1);
            k=str.find('%');
        }
        while(i<arg.size())
        {
            str+=arg[i++];
        }
        return str;
    }
};

神奇数(简单)(模拟,素数)

神奇数_牛客笔试题_牛客网 (nowcoder.com)

#include <bits/stdc++.h>
using namespace std;

bool is_prime[100];

bool check(int x) {
    string s = to_string(x);
    for(int i = 0; i < s.size(); i++) {
        for(int j = 0; j < s.size(); j++) {
            if(s[i] == '0' || i == j) continue;
            int num = 10*(s[i] - '0') + (s[j] - '0');
            if(is_prime[num]) return true;
        }
    }
    return false;
}

int main() {
    is_prime[11] = is_prime[13] = is_prime[17] = is_prime[19] = is_prime[23] = is_prime[29] = is_prime[31] = is_prime[37] = is_prime[41] = is_prime[43] = is_prime[47] = is_prime[53] = is_prime[59] = is_prime[61] = is_prime[67] = is_prime[73] = is_prime[79] = is_prime[83] = is_prime[89] = is_prime[91] = is_prime[97] = true;
    int a, b;
    cin >> a >> b;
    int ans = 0;
    for(int x = a; x <= b; x++) {
        if(x < 10) continue;
        ans += check(x);
    }
    cout << ans << endl;
    return 0;
}

DNA序列 (简单)(滑动窗口)

DNA序列_牛客题霸_牛客网 (nowcoder.com)

#include <iostream>
#include<string>
using namespace std;

int main() {
    string str;
    cin>>str;
    int n;
    cin>>n;
    int left=0,right=n-1;
    int sum=n;
    int tar=0;
    
    for(int i=left;i<=right;i++)
    {
        if(i<str.size())
        {
            if(str[i]=='C'||str[i]=='G') tar++;
        }
    }
    double ratio=(double)tar/sum;

    string ret=str.substr(0,n);
    while(right<str.size())
    {
        if(str[left]=='C'||str[left]=='G') tar--;
        left++;
        if(right<str.size()-1)
        {
            if(right+1<str.size()&&(str[right+1]=='C'||str[right+1]=='G')) tar++;
            right++;

            double r=(double)tar/sum;
            if(r>ratio)
            {
                ratio=r;
                ret=str.substr(left,n);
            }
        }
        else right++;
    }
    cout<<ret;
}
// 64 位输出请用 printf("%lld")
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值