Adament Cabin

  • コンピューター
    • アルゴリズム
    • Linux
    • Problems
    • NEUQACM
  • 日本語を勉強
  • ACG
    • 見られている番組
    • ゲーム
  • 日常
  • 雑貨
    • ドキュメント
    • 資源
    • 治療センター
  • リンク
  • ブランチサイト
  • Japanese
    • Chinese
Adament Cabin
恋厨症候群の第2治療センター
  1. 首页
  2. コンピューター
  3. アルゴリズム
  4. 正文

LeetCode5 最长回文子串

2021年11月20日 475ヒート 0お気に入り 0コメント

Leetcode 5. Longest Palindromic Substring

给你一个字符串 s,找到 s 中最长的回文子串。

示例:

输入:s = "babad"
        输出:"bab"
        解释:"aba" 同样是符合题意的答案。
        

动态规划解法:秒懂算法的bilibili视频

代码位于文章末尾。

这里我举个例子:abcdedcaa

应该返回cdedc

下面的表格中,表头0-8对应着下标,表内的数值对应着Pa的值。横向表头对应i的值,纵向表头对应j的值。

 012345678
0100000000
1010000000
2001000000
3000100000
4000010000
5000001000
6000000100
7000000010
8000000001

从i=0,j=0不断遍历,可以找到第一个回文字串是j=5,i=3处的ded

 012345678
0100000000
1010000000
2001000000
3000100000
4000010000
5000101000
6000000100
7000000010
8000000001

往下寻找,可以发现j=6,i=2这个点同样也能找到回文字串cdedc,是在ded的基础上寻找到的。

 012345678
0100000000
1010000000
2001000000
3000100000
4000010000
5000101000
6001000100
7000000010
8000000001

可以看出,这种方法是在单独的回文字串的基础上不断往两边扩展。首先的最小字串为一个字母,然后遍历i和j,i<j。发现i+1,j-1处为一个回文字串后拓展。

class Solution {
public:
    string longestPalindrome(string s) {
        if(s.size()==1) return s;
        int maxlength=1,startalpha=0;
        bool Pa[s.size()][s.size()];
        for(int i=0;i<s.size();i++) for(int j=0;j<s.size();j++) if(i==j) Pa[i][j]=true;else Pa[i][j]=false;
        for(int j=0;j<s.size();j++){
            for(int i=0;i<j;i++){
                if(s[i]==s[j]&&(j-i==1||Pa[i+1][j-1])) Pa[i][j]=true;
                if(Pa[i][j]&&j-i+1>maxlength){
                    startalpha=i;
                    maxlength=j-i+1;
                }
            }
        }
        return s.substr(startalpha,maxlength);
    }
};
タグ: C/C++/C#
更新日:2022年4月21日

BiyiAdopac

社会ごみ

Like
< 前の投稿
次の投稿 >

コメント

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
キャンセル

文章目录
  • Leetcode 5. Longest Palindromic Substring
カテゴリー
  • アルゴリズム / 5篇
  • Linux / 5篇
  • NEUQACM / 9篇
  • Problems / 3篇
  • 日常 / 2篇
  • 日本語 / 2篇
  • ゲーム / 1篇
  • コンピューター / 22篇
  • ドキュメント / 4篇
タグ
ArchLinux Arcaea Magisk C/C++/C# Physics LaTex Learning
ヤツメ穴
https://www.adament.xyz/wp-content/uploads/2022/03/ヤツメ穴(BGM).mp3
クリスタルグラビティ
https://www.adament.xyz/wp-content/uploads/2022/08/CrystalGravity.mp3

COPYRIGHT © 2022 adament.xyz. ALL RIGHTS RESERVED.
このサイトにとって重要ではありませんが、それでも必要な プライバシーポリシー