蓝桥杯提高---项链

文章目录

题目

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

思路

就按照题目所说,将输入的字符串从任一地方切开,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;
}

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

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

发布了85 篇原创文章 · 获赞 55 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/shelgi/article/details/104190944