题解 | #密码截取#C++(中心扩展法)

密码截取

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

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

int getLen (string s, int l, int r) {
    while(l >= 0 && r < s.size() && s[l] == s[r]) {
        l--;
        r++;
    }
    return r - l - 1;
}

// 中心扩展法(单双中心取最大)
int main () {
    string s;
    while (cin >> s) {
        int len = s.size();
        if (len == 0) {
            cout << 0 << endl;
            continue;
        }
        if (len == 1) {
            cout << 1 << endl;
            continue;
        }
        int mS = 0;
        for (int i = 0; i < len - 1; ++i) {
            int m1 = getLen(s, i, i);
            int m2 = getLen(s, i, i + 1);
            mS = max(max(m1, m2), mS);
        }
        cout << mS << endl;

    }
    return 0;
}
全部评论
应该r-l+1吧,不应该是-1
点赞 回复 分享
发布于 2022-02-23 00:45

相关推荐

评论
14
1
分享

创作者周榜

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