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

    题目地址:https://leetcode-cn.com/problems/longest-palindromic-substring/

    解题思路:简单的动态规划

    需要注意的是:如果使用C编译器,直接定义char returnS[1005],最后结果始终输出为null(不知道为什么)。要使用malloc分配内存。

    char * longestPalindrome(char * s) {
        bool dp[1005][1005];
        //dp[i][j]:表示的是从i到j的字符串是否为回文串
        memset(dp, 0, sizeof(dp));
        int i, j;
        int len;
        char *returnS = (char *)malloc(sizeof(char) * 1005);
        memset(returnS, 0, sizeof(returnS));
        for (len = 1; len <= strlen(s); len++)//记录长度为len的回文串的起始和终点下标
            for (i = 0; i + len <= strlen(s); i++) {
                j = i + len - 1;
                if (len == 1)//初始化,所有单个字符都是回文串
                    dp[i][j] = true;
                else if (len == 2)
                    dp[i][j] = (s[i] == s[j]);
                else
                    dp[i][j] = dp[i + 1][j - 1] && (s[i] == s[j]);
                if (dp[i][j] && len >= strlen(returnS)) {//如果该串是回文串并且长度比上一次长,那么记录下来
                    memcpy(returnS, s + i, len);
                    returnS[len] = '';
                }
            }
        return returnS;
    }
  • 相关阅读:
    Session
    python内存优化机制中的小秘密
    跨域请求
    Cookie
    json
    Python深浅拷贝辨析
    Django form组件相关
    Python 中的 if __name__ == '__main__'
    online_judge_1108
    online_judge_1107
  • 原文地址:https://www.cnblogs.com/cc-xiao5/p/13262191.html
Copyright © 2011-2022 走看看