zoukankan      html  css  js  c++  java
  • leecode刷题(15)-- 验证回文字符串

    leecode刷题(15)-- 验证回文字符串

    验证回文字符串

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

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

    示例 1:

    输入: "A man, a plan, a canal: Panama"
    输出: true
    

    示例 2:

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

    思路:

    刚开始和上一题一样,我也没理解“回文字符串”是什么意思,后来想了下,“回文字符串”其实就是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文字符串。

    理解了这个,接下来我们来讲解思路:

    1. 去除字符串中的特殊字符,保留字母和数字,因为题目中忽略字母的大小写,所以我们也将字母全部转为小写好了。这里可以使用 replaceAll()toLowerCase() 方法;
    2. 定义和初始化两个游标 left = 0right = s.length() - 1 ,分别指向字符串的开头和结尾;
    3. 我们设置一个while循环,比较 s[left] == s[rigth],如果是回文字符串,那么按从左往右和从右往左的顺序的字母或数字应该是依次相等的;
    4. 如果相等,则让游标 left 和 rigth 加 1 后再次比较对应的字母或数字是否相等;如果不相等,则跳出循环返回 false。
    5. 相等就重复执行 步骤4 的过程,直到跳出循环。

    代码如下:

    class Solution {
        public boolean isPalindrome(String s) {
            if(s == null) return false;
            s = s.replaceAll("[^a-z^A-Z^0-9]", "").toLowerCase();
    		int left = 0, right = s.length() - 1;
    		char[] str = s.toCharArray();
    		while(left <= right){
                if(str[left] != str[right]){
                    return false;
                }
                left++;
                right--;
            }
            return true;
        }
    }
    

    因为题目中说将空字符串定义为有效的回文串,所以我们就不需要判断空字符串啦,但是 s == null 并不等于 s.length() == 0 。这里延伸出一个知识点:

    Java空字符串与null区别:

    1、类型
    null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ;
    ""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ;

    2、内存分配
    String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间;
    String str = ""; 表示声明一个字符串类型的引用,其值为""空字符串,这个str引用指向的是空字符串的内存空间;

  • 相关阅读:
    求职者:推销自己的四大妙招
    你的幸福,我的未来
    巧用close_trace命令释放误删trace文件
    转储控制文件信息
    _shared_pool_reserved_pct or shared_pool_reserved_size with ASMM
    【书籍推荐】Oracle 8i Internal Services
    【书籍推荐】Expert Oracle Practices
    Twitter将启动其在犹他州的客户数据中心
    facebook发布了Tornado V1.0
    latch free:cache buffer handles造成的SQL性能问题
  • 原文地址:https://www.cnblogs.com/weixuqin/p/10422135.html
Copyright © 2011-2022 走看看