蓝桥杯提高---项链

文章目录

题目

在这里插入图片描述
在这里插入图片描述

思路

就按照题目所说,将输入的字符串从任一地方切开,c++有个substr函数,参数是起始下标和所需长度。具体的介绍可以去看看这个博客
substr函数的介绍
有了这个函数我们就可以成功的将输入的字符串在不同地方断开然后重新合并了。剩下的只需要按照题意去求前一段的长度和后一段的长度再相加就行了。

代码

#include<iostream>
#include<string.h>
#include<cmath>
using namespace std;
// string s="abccdefgh";
// cout<<s.substr(4)<<endl;
// cout<<s.substr(0,4);
string n;


int get_string(string s,int i){
    string s1=s.substr(i)+s.substr(0,i);
    //cout<<s1<<endl;
    int j1=0,j2=0;
    char c1='w';
    char c2='w';
    for(int k=0;k<s1.length();k++){
        if(s1[k]!=c1){
            c1=s1[k];
            break;
        }
    }

    for(int k=s1.length()-1;k>0;k--){
        if(s1[k]!=c2){
            c2=s1[k];
            break;
        }
    }


    for(int j=0;j<s1.length();j++){
        if(s1[j]==c1||s1[j]=='w')
            j1++;
        else{
            break;
        } 
    }

    for(int j=s1.length()-1;j>0;j--){
        if(s1[j]==c2||s1[j]=='w')
            j2++;
        else{
            break;
        }
    }


    if(j1==s1.length())
        return j1;
    else{
        return j1+j2;
    }
}


int main(){
    cin>>n;
    int M=0;
    for(int i=0;i<n.length();i++){
        int m=get_string(n,i);
        M=M>m?M:m;
    }
    cout<<M<<endl;
    return 0;
}

在这里插入图片描述
在这里插入图片描述

算法题真的越刷越上头,根本停不下来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shelgi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值