经典算法-递归

参考:

六大算法之一:递归 - zw6161080123的博客 - CSDN博客

数据结构+算法(第08篇):史上最猛之递归屠龙奥义

递归就这么简单

循环、递归、二分检索等怎么学?10张动图一次搞定!

Java数据结构和算法(八)——递归

题目:valid-palindrome

判断题目给出的字符串是不是回文,仅考虑字符串中的字母字符和数字字符,并且忽略大小写
例如:"A man, a plan, a canal: Panama"是回文
"race a car"不是回文
注意:
你有没有考虑过字符串可能为空?这是面试时应该提出的一个好问题。
针对这个问题,我们定义空字符串是回文
public class Solution {
    public boolean isPalindrome(String s) {
        s=s.toLowerCase();
        if(s.length()==0||s.length()==1){
            return true;
        }
        int i=0;
        int j=s.length()-1;
        while(i<j){
            if(!isRight(s.charAt(i))){
                i++;
                continue;
            }
            if(!isRight(s.charAt(j))){
                j--;
                continue;
            }
            if(s.charAt(i)==s.charAt(j)){
                i++;
                j--;
                continue;
            }else{
                return false;
            }
        }
        
        return true;
    }
    
    private boolean isRight(char c){
        if((c>='0'&&c<='9')||(c>='a'&&c<='z')||(c>='A'&&c<='Z')){
            return true;
        }
        return false;
    }
}
View Code

解题思路:

递归的思想,首先将字符串转换成小写,然后将两边向中间遍历,将i和j处的值作对比。

 

 

 

posted @ 2020-02-29 21:08  弱水三千12138  阅读(129)  评论(0)    收藏  举报