题解 | #密码截取#

密码截取

https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1

#include <iostream>
using namespace std;
int get_one_sub(string& s, int center) {
    //cout<<"以"<<center<<"为中心计算";
    int res = 1;
    if (center == 0) {
        //cout<<endl;
        return res;
    }
    if (center == s.size() - 1) {
        return res;
    } else {
        int l = center - 1;
        int r = center + 1;
        while (l >= 0 && r <= s.size() - 1) {
            if (s[l] == s[r]) {
                l--;
                r++;
                res += 2;
            } else {
                break;
            }
        }
        //cout<<"结果为"<<res<<endl;
        return res;

    }

}
int get_two_sub(string& s, int l, int r) {
    //cout<<"计算"<<l<<","<<r<<"结果为";
    int res = 2;
    l--;
    r++;
    while (l >= 0 && r <= s.size() - 1) {
        if (s[l] == s[r]) {
            l--;
            r++;
            res += 2;
        } else {
            break;
        }
    }
    if (l == 0 || r == s.size() - 1) {
        //cout<<res<<endl;
        return res;
    }
    //cout<<res<<endl;
    return res;

}
int main() {
    string s;
    cin>>s;
    int res = 1;
    for(int i = 0;i<=s.size()-2;i++){
            if(s[i] == s[i+1]){
                res = max(max(get_one_sub(s,i),get_two_sub(s, i, i+1)),res);
            }else {
                res = max(res,get_one_sub(s, i));
            }
    }
    cout<<res;
    res = 1;
}
// 64 位输出请用 printf("%lld")
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务