java-力扣-验证回文串

验证回文串


给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:

输入: "race a car"
输出: false

题意:
什么是回文? 比如说 a b  c c b a 是回文串;a b  c  b 不是回文串
第一个示例
只考虑数字和字母,空字符也属于有效的回文,其他的符号就都不算
第一个示例可以看成是AmanaplanacanalPanama
不区分大小写,回文简单来说就是正这看,和倒着看是一样的

思路:
思想是有两个指针,一个指针放在字符串的第一个元素
另一个指针放在字符串的最后一个元素
然后移动两个指针,分别进行比较,看是否相等
然后题意说忽略大小写,那么我们可以把字母都转换成小写,或大写
A 的ASCII码值是65
a 的ASCII码值是97
他们相差32
那么大写转换成小写可以写成 A  + 32 = a
我们就可以用这样的方式把大写的字母转换成小写的啦
这样就把有大写和小写的字母的字符串都转换成是小写的了
代码
class Solution {
    public boolean isPalindrome(String s) {
       for(int i = 0,j = s.length()-1; i < j ;){
           char left = s.charAt(i);
           char right = s.charAt(j);
           if(s.charAt(i) >= 'A' && s.charAt(i) <= 'Z'){
               left += 32;//大写转小写            }
            if(s.charAt(j) >= 'A' && s.charAt(j) <= 'Z'){
               right += 32;
           }
           if(!(left >='a' && left <= 'z' || left >='0' && left <='9')){
               i++;
               continue;
           }
           if(!(right >='a' && right <= 'z' || right >='0' && right <='9')){
            j--;
            continue;
           }
           if( left != right) return false;
           i++;
           j--;
       }
       return true;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值