题解 | #密码截取#

密码截取

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

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

int main() 
{
    string str;
    cin >> str;
    int m=1;                                //有效密码串的最大长度
    for (int i = 1; i < str.size()-1; i++)  //先遍历整个字符串,判断其中是否存在长度为奇数的有效密码串
    {
        int n = 1;                          //长度为奇数的有效密码串是以最中间的一个字符为中心对称的,最小长度为1
        for (int j = 1; j <= ((i >= (str.size() - 1 - i)) ? (str.size() - 1 - i) : i); j++)
        {
            if (str[i+j] == str[i-j])       //从当前位置开始,依次判断左右两边的字符是否相同
            {
                n = n + 2;
            }
            else                            //若找到不同的,则不再继续判断
            {
                break;
            }
        }
        if (n > m)                          //若找到一个更长的有效字符串,将其长度记入m
        {
            m = n;
        }
    }
    for (int i = 0; i < str.size() - 1; i++) //同上理,判断是否存在长度为偶数的有效字符串
    {
        int n = 0;
        if (str[i] == str[i + 1])
        {
            n = n + 2;
            int j = i + 1;
            for (int m = 1; m <= (i >= (str.size() - 1 - j) ? (str.size() - 1 - j) : i); m++)
            {
                if (str[i - m] == str[j + m])
                {
                    n = n + 2;
                }
                else
                {
                    break;
                }
            }
        }
        if (m < n)
        {
            m = n;
        }
    }
    cout << m << endl;
    return 0;
}

全部评论

相关推荐

07-22 11:12
门头沟学院 Java
不是,我就随手投的怎么还真发面试啊
皮格吉:大厂特别快的——来自已经被共享中
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-24 13:35
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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