题解 | #密码截取#

密码截取

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

实际上就是最长回文子串。采用动态规划解决即可。事件复杂度O(n^2).

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int maxlen = 0;
        String str = in.nextLine();
        char [] chs  = str.toCharArray();
        boolean dp[][] = new boolean[chs.length][chs.length];
        for(int right = 1;right<chs.length;++right){
            for(int left = right-1;left>=0;--left){
                if(chs[left] == chs[right]){
                    if(right-left<=2)dp[left][right] = true;
                    else dp[left][right] = dp[left+1][right-1];
                    if(dp[left][right])maxlen = Math.max(maxlen,right-left+1);
                }
            }
        }
        System.out.println(maxlen);
    }
}
全部评论

相关推荐

认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务