码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 680 验证回文字符串II

时间:2020-05-19 21:02:44      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:双指针   判断   rom   code   复杂   回文字符串   lap   指针   tar   

原题点这里

给定一个非空字符串,判断是否可以通过删除一个字符串,使得剩余的字符串为回文串。

很容易想到双指针,当可以删除时,尝试删除,然后递归。

技术图片
public static boolean validSub(String s,int left,int right,int del){
        if(del>1) return false;
        if(left>=right) return true;
        for(int i=left,j=right;i<j;i++,j--){
            if(s.charAt(i)==s.charAt(j)) continue;
            else{
                if(s.charAt(i+1)==s.charAt(j)&&s.charAt(i)==s.charAt(j-1))
                    return validSub(s,i+1,j,del+1) || validSub(s,i,j-1,del+1);
                if(s.charAt(i+1)==s.charAt(j)) return validSub(s,i+1,j,del+1);
                if(s.charAt(i)==s.charAt(j-1)) return validSub(s,i,j-1,del+1);
                return false;
            }
        }
        return true;
    }
    public static boolean validPalindrome(String s) {
        return validSub(s,0,s.length()-1,0);
    }
View Code

这里在考虑递归时,复杂了。

我们可以用双指针进行判断,如果不同,则判断删掉左边指针的字符||删掉右边的字符。只做这样一次判断就行。无需递归。

(虽然我的递归中,通过del达到同样的效果,但是如果只删除一次(即只递归一层)),完全可以用循环来替代。

leetcode 680 验证回文字符串II

标签:双指针   判断   rom   code   复杂   回文字符串   lap   指针   tar   

原文地址:https://www.cnblogs.com/superxuezhazha/p/12918934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!