华为od 机考题1--最长子字符串的长度(二)

给你一个字符串 s,字符串 s 首尾相连成一个环形 ,请你在环中找出’l’、‘o’、‘x’ 字符都恰好出现了偶数次最长子字符串的长度。

输入描述:输入是一串小写的字母组成的字符串 s1 <= s.length <= 5 x 10^5,s 只包含小写英文字母。

输出描述:输出是一个整数

用例 1 输入 alolobo 输出 6

用例 2 输入 looxdolx 输出 7

#include <iostream>
#include <algorithm>
using namespace std;
//判断字符串是否符合题目要求
bool isdouble(string& s){
    size_t ocnt = count(s.begin(),s.end(),'o');
    size_t lcnt = count(s.begin(),s.end(),'l');
    size_t xcnt = count(s.begin(),s.end(),'x');
    
    if(ocnt%2 == 0 && lcnt%2 == 0 && xcnt%2 == 0){
        return true;
    }
    return false;
}

int main() {
    string s;
    cin>>s;
    
    if(s.size()<2){
        cout<<0<<endl;
        return 0;
    }
    
    string str = s;
    str = str.append(s);

    size_t maxLength = 0;
    for(int i = 0;i<s.size();i++){
        for(int j = s.size();j>0;j--){
            string newstr = str.substr(i,j);
            bool ret = isdouble(newstr);
            if(ret){
                maxLength = newstr.size();
                break;
            }
        }
        if(maxLength == s.size()){
            break;
        }
    }
    cout<<maxLength<<endl;
    return 0;
}

全部评论

相关推荐

07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务