美文网首页
判断一个字符串是不是回文

判断一个字符串是不是回文

作者: EmonH | 来源:发表于2020-03-16 19:52 被阅读0次

几天前找工作,面试官问了我一个算法题,我竟然没有答上来。痛定思痛决定深入研究下。
问题是这样的:给一字符串String s = "A1 man, a plan, a canal: Panam1a";忽略字母大小写的情况下,只判断里面的字符和数字组成的字符串是不是回文。
要解决这样的问题我们先从简单的字符串判断回文说起。首先我们使用递归的方法判断一个普通的字符串是不是回文

 public static boolean isPa(String s){
        if(s.charAt(0) == s.charAt(s.length() - 1)){
            if(s.length() > 2){
                return isPa(s.substring(1,s.length()-1));
            }else{
                return true;
            }
        }
        return false;
    }

依据上面的方法我们来解决那个特殊的字符串

public static boolean isPa(String s){
        if(!isDigLet(s.charAt(0))){
            return isPa(s.substring(1,s.length()));
        };
        if(!isDigLet(s.charAt(s.length() -1))){
            return isPa(s.substring(0,s.length() -1));
        };
        if(s.charAt(0) == s.charAt(s.length() -1)){
            if(s.length() > 2){
                return isPa(s.substring(1,s.length()-1));
            }else{
                return true;
            }
        }else{
            return false;
        }
    }
public static void main(String[] str) {
        String s = "A man, a plan, a canal: Panama";
        // String s = "amanaplanacanalpanama";
        s = s.toLowerCase();
        System.out.println(isPa(s));
    }

当然了,对于java来说丰富的接口函数,实现这样的功能简直“洒洒水啦”,可惜面试官不让使用replaceAll函数,也就可惜了。

public static boolean isPa(String s){
    String str = s.toLowerCase().replaceAll("[^a-zA-Z0-9]","").toLowerCase();
    StringBuilder stringBuffer = new StringBuilder(str);
    String ss = stringBuffer.reverse().toString();
    if(str.equals(ss)){
        return true;
    }else{
        return false;
    }
}

相关文章

  • 2020-04-26

    题目:判断是不是回文字符串

  • 字符串进阶

    1.反转字符串 2.字符串包含问题 3.字符串转数字 4.判断是否为回文判断一条单向链表是不是“回文” 分析:对于...

  • 前端-一些基础问题

    1.实现一个函数,判断输入是不是回文字符串;注:回文字符串:是一个正读和反读都一样的字符串,比如“level”或者...

  • C# 判断字符串是否是回文字符串(单链表)

    回文字符串: ABCDCBA ABCDDCBA 两种都属于回文字符串; 如何判断一个字符串是否是否回文: 使用快慢...

  • 035-判断一个字符串是否是回文

    描述 判断一个由字母、数字和空格组成的字符串是否是回文。 约束: ​ 空字符串为回文; 示例: ​ ...

  • 680. Valid Palindrome II

    题目: 给你一个字符串,判断至多删掉一个字符串能不能让这个字符串变成回文串。 解析: 又是一道回文字符串判断的问题...

  • 回文字符串的判断及返回最大串

    回文字符串的判断及返回最大串 问题1:怎么获取一个字符串的子串? 问题2:怎么判断一个字符串是回文字符串? 问题1...

  • 字符串问题合集

    1. 验证回文串 题目描述: 输入一个字符串,只关注字母和数字,判断字符串是否为回文串。空字符串也可以认为是回文串...

  • LeetCode-680-验证回文字符串 Ⅱ

    给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。image.png解题思路: 判断是否回文字符...

  • 算法练习14:判断一个数是不是回文数(leetcode 9)

    判断一个数是不是回文数: 方法1:字符串+中位数+双指针 转成字符串,然后双指针,分别指向最前和最后,比较两指针的...

网友评论

      本文标题:判断一个字符串是不是回文

      本文链接:https://www.haomeiwen.com/subject/zfibehtx.html