首页 > 学院 > 开发设计 > 正文

leetcode5. Longest Palindromic Substring

2019-11-10 17:31:48
字体:
来源:转载
供稿:网友

题意

找出一个字符串的最长回文子字符串

分析

字符串最长为1000,比较短,我们可以采用动态规划的思想。 dp[i][j]表示从下标为i到下标为j的字符串是否为回文串 dp[i][j]=true if s[i]=s[j]且dp[i+1][j-1]=true

public String longestPalindrome(String s) { int n=s.length(); boolean dp[][]=new boolean[n][n]; int max=0,index=0; for(int i=0;i<n;i++){ dp[i][i]=true; if(i>0&&s.charAt(i)==s.charAt(i-1)){ dp[i-1][i]=true; max=2; index=i-1; } } //长度为i的回文子串 for(int i=3;i<=n;i++) for(int j=0;j<n+1-i;j++){ if(s.charAt(j)==s.charAt(j+i-1)&&dp[j+1][j+i-2]){ dp[j][j+i-1]=true; max=i; index=j; } } return s.substring(index, index+max); }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表