判断一个字符串是不是回文串——java实现

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

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false

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

//如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
//
//字母和数字都属于字母数字字符。
//
//给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。


import java.util.Locale;

public class Test {
    public static boolean isvalid(char ch) {//判断是否为有效字符
        if (ch > '0' && ch < '9' || ch > 'a' && ch < 'z') {
            return true;
        }
        return false;
    }

    public static boolean isPalindrome(String str) {
        str =  str.toLowerCase();//字符串全部字符转化为小写
        int left = 0;
        int right = str.length() - 1;//定义两个首尾下标
        while (left < right) {
            while (left < right && isvalid(str.charAt(left)) == false) {
                left++;
            }
            //这段执行完保证此时left指向的有效字符
            while(left < right && isvalid(str.charAt(right)) == false) {
                right--;
            }
            //这段执行完保证此时right指向的有效字符
            if(str.charAt(left) == str.charAt(right)){
                left++;
                right--;
            }
            //循环判断回文
            else {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        String str = "A man, a plan, a canal: Panama";
        if (isPalindrome(str)) {
            System.out.println("是回文串!");
        } else {
            System.out.println("不是回文串!");
        }
    }
}

此外,判断字符是不是有效字符也可以调用Character的原生方法

if(Character.isDigit(ch) || Character.isLetter(ch)){
            return true;
        }
else {
            return false;
       }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值