LeetCode 125. Valid Palindrome-回文字符串判断

题目

题目的意思是,判断一个字符串是否是回文字符串,只考虑字母和数字,忽略大小写。

此处将空字符串定义为回文字符串,即如果一个字符串只有非字母和非数字,也是回文字符串。eg:!%^^^^%%,是一个回文字符串。

思路及实现

  • 使用JVA中char的工具类Character进行字符串的操作,其中使用到的方法作用
//方法 isLetterOrDigit(char ch) 确定指定字符是否为字母或数字。
//charAt(int index) 返回指定索引处的 char 值。
//toLowerCase(char ch) 使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。
  • 判断字符串是否是回文的方法实现如下
/**
     * 判断是否是回文的方法
     * 题目规定空字符串也是回文,如果一个字符串只有非字母和非数字的字符,也是回文字符串
     * @param s
     * @return
     */
    public boolean isPalindrome(String s) {
        int i = 0;
        int j = s.length() - 1;

        while (i < j) {
            //嵌套一层循环,用以跳过非数字、非字母的字符
            //这里需要再次判断i是否小于j,因为while循环对i值做了更新,外层循环的i<j不一定成立了,如果j <= i,跑过了
            while (!Character.isLetterOrDigit(s.charAt(i)) && i < j) {
                i++;
            }
            while (!Character.isLetterOrDigit(s.charAt(j)) && i < j) {
                j--;
            }

            //遇到i和j指向的字母数字不相等,即不构成回文,返回false,循环结束
            if (Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j))) {
                return false;
            }

            i++;
            j--;
        }
        return true;
    }

小知识大道理,一点一滴积累。给点个赞吧微笑

(个人微信公众号:TestOnTheRoad,搜索ID或者扫描下方二维码添加关注,关注测试开发工程师的成长之路


阅读更多
个人分类: LeetCode
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭