• [Jobdu] 题目1528:最长回文子串


    题目描述:

    回文串就是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
    回文子串,顾名思义,即字符串中满足回文性质的子串。
    给出一个只由小写英文字符a,b,c...x,y,z组成的字符串,请输出其中最长的回文子串的长度。

    输入:

    输入包含多个测试用例,每组测试用例输入一行由小写英文字符a,b,c...x,y,z组成的字符串,字符串的长度不大于200000。

    输出:

    对于每组测试用例,输出一个整数,表示该组测试用例的字符串中所包含的的最长回文子串的长度。

    样例输入:
    abab
    bbbb
    abba
    样例输出:
    3
    4
    4

    腾讯面试题,max_len初始为1,设为0会出错。

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 
     5 int get_lps_len(string &s, int a, int b) {
     6     int len = (a == b) ? -1 : 0;
     7     while (a >= 0 && b < s.length() && s[a] == s[b]) {
     8         --a; ++b;
     9         len += 2;
    10     }
    11     return len;
    12 }
    13 
    14 int main() {
    15     string s;
    16     int max_len, cur_len;
    17     while (cin >> s) {
    18         max_len = 1;
    19         for (int i = 0; i < s.length() - 1; ++i) {
    20             cur_len = get_lps_len(s, i, i);
    21             max_len = max_len > cur_len ? max_len : cur_len;
    22             cur_len = get_lps_len(s, i, i + 1);
    23             max_len = max_len > cur_len ? max_len : cur_len;
    24         }
    25         cout << max_len << endl;
    26     }
    27     return 0;
    28 }
  • 相关阅读:
    猜数字游戏(补)
    团队项目五(项目回顾)
    项目回顾
    第二次阶段冲刺
    团队项目(任务三):第一次冲刺
    个人项目(一):新猜数字
    课后作业(一)
    团队任务二
    团队任务(一)
    课后作业(一)
  • 原文地址:https://www.cnblogs.com/easonliu/p/3639095.html
Copyright © 2020-2023  润新知