题解 | #密码截取#

密码截取

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
       
        String str=in.nextLine();
        System.out.println(getLen(str));

    }
    public static int getLen(String str)
    {
        boolean[][]dp=new boolean[str.length()][str.length()];
        if(str.length()<2) return str.length();
        for(int i=0;i<str.length();i++)
        dp[i][i]=true;
        int maxlen=0;
        for(int len=1;len<=str.length();len++)
        {
            for(int j=0;j<str.length();j++)
            {
                int i=j+len-1;
                if(i>=str.length()) break;
                if(i<str.length()&&str.charAt(i)==str.charAt(j))
                {
                    if(i-j<3)
                    dp[j][i]=true;
                    else   dp[j][i]=dp[j+1][i-1];
                   
                }
                else{
                    dp[j][i]=false;
                }
                 if(dp[j][i]==true)
                    maxlen=Math.max(maxlen,i-j+1);
            }
    
        }
    return maxlen;
    }
}

全部评论

相关推荐

只写bug的程序媛:才15,我招行20多万,建设银行50多万,说放弃就放弃
点赞 评论 收藏
分享
12-07 16:16
已编辑
四川大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务