zoukankan      html  css  js  c++  java
  • LeetCode 4 最长回文子串

    1.题目链接

    https://leetcode-cn.com/problems/longest-palindromic-substring/

    2.题目描述

    给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

    示例 1:

    输入: "babad"
    输出: "bab"
    注意: "aba" 也是一个有效答案。

    示例 2:

    输入: "cbbd"
    输出: "bb"

    3.题目解析

    回文串指的是,从左往右和从右往左读是一样的,题目要求找到最长的回文子串,从当前字符往右读取连续重复字符,即为子串的中心,并向左右读取,判断当前子串是否为回文子串。

    4.代码实现

    char * longestPalindrome(char * s){
        int left = 0;
        int right = 0;
        int maxlen = 0;
        int k = 0;
        int start = 0;
    
        while (s[k]) {
            right = k;
            left = k - 1;
    
            while (s[right] == s[k]) {
                right++;
            }
            k = right;
    
            while (left >= 0 && s[left] && s[left] == s[right]) {
                left--;
                right++;
            }
            if (right - left - 1 > maxlen) {
                start = left + 1;
                maxlen = right - left - 1;
            }
    
        }
        char* returnStr = (char*)malloc(maxlen + 1);
        returnStr[maxlen] '';
        for (int i = 0; i < maxlen; i++) 
            returnStr[i] = s[start + i];
        return returnStr;
    }

    5.提交记录

    stay hungry, stay foolish
  • 相关阅读:
    总结随笔
    Beta冲刺第七天
    Beta冲刺第六天
    Beta冲刺第五天
    Beta冲刺第四天
    Beta冲刺第三天
    POJ 2240 Arbitrage
    POJ 3660 Cow Contest
    POJ 1797 Heavy Transportation
    LightOJ 1123 Trail Maintenance
  • 原文地址:https://www.cnblogs.com/zygote/p/13605094.html
Copyright © 2011-2022 走看看