zoukankan      html  css  js  c++  java
  • 125. 验证回文串

    难度:简单
    题目描述:
    给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
     
    说明:本题中,我们将空字符串定义为有效的回文串。
     
    示例 1:
     
    输入: "A man, a plan, a canal: Panama"
    输出: true
    示例 2:
     
    输入: "race a car"
    输出: false
     
     
    解题思路:
    方法一:
    ①对字符串s进行一次遍历循环,将字母和数字进行保留
    ②将数字和字母(小写)存到一个字符串sgood中
    ③再将sgood翻转得到sgood_reverse
    ④返回两个字符串比较的布尔值
     
     
    代码
    class Solution {
        public boolean isPalindrome(String s) {
            int length = s.length();
            StringBuffer sgood = new StringBuffer();
            for(int i = 0; i < length; i++){
                char ch = s.charAt(i);
                if(Character.isLetterOrDigit(ch)){
                    sgood.append(Character.toLowerCase(ch));
                }
            }
            StringBuffer sgood_reverse = new StringBuffer(sgood).reverse();
            boolean isPalin = sgood.toString().equals(sgood_reverse.toString());
            return  isPalin;
        }
    }
     
    补充知识:
    一、StringBuffer
    当对字符串进行修改的时候,需要使用StringBufferStringBuider类,
    和String类不同的是,StringBuffer和StringBulider类的对象能够被多次的修改,并且不产生新的未使用对象,
    StringBuilder 相较于StringBuffer类有速度优势,所以在多数情况下建议使用StringBuider类,
    然而在应用程序要求线程安全的情况下,则必须使用StringBuffer类。
    StringBuffer 方法
    序号 方法描述
    1 public StringBuffer append(String s)
    将指定的字符串追加到此字符序列
    2 public StringBuffer reverse()
    将此字符序列用起翻转形式取代
    3 public delete(int start, int end)
    移除此序列的子字符串中的字符
    4 public insert(int offset, int i)
    将int参数的字符串表示形式插入此序列中
    5 replace(int start, int end,String str)
    使用给定String中的字符替换此序列的子字符串中的字符
    此题中用到的String类方法
    序号 方法描述
    1 int length()
    返回长度(字符数)。
    2 char charAt(int index)
    返回此序列中指定索引处的char值
    3 String toString()
    返回此序列这种数据的字符串表示形式
    4 public boolean equals(Object anObject)
    将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。 
    此题中用到的Character类方法
    序号 方法描述
    1 public static boolean isLetterOrDigit(char ch)
    确定指定字符是否为字母或数字。 
    如果 Character.isLetter(char ch) 或 Character.isDigit(char ch) 对字符返回的是 true,则认为字符是一个字母或数字。 
    2 public static char toLowerCase(char ch)
    使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。 
     

    题目内容取自:https://leetcode-cn.com/problems/valid-palindrome/

  • 相关阅读:
    C#版排序之交换排序
    AndroidSQLite(一)
    oracle日期处理完整版
    B+树查询上下级(sql实现)
    PHP写的几个基础算法 (转载)
    FLEX程序设计正则表达式
    SQL*PLUS命令的使用大全
    oracle常用sql语句语法
    PHP.ini配置文件(转载)
    string扩展实现强悍的.Net不可逆加密方法 (转载)
  • 原文地址:https://www.cnblogs.com/fenixG/p/13161798.html
Copyright © 2011-2022 走看看