标签:字符 String 验证 int StringBuffer sgood 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
当对字符串进行修改的时候,需要使用StringBuffer和StringBuider类,
和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中的字符替换此序列的子字符串中的字符 |
序号 | 方法描述 |
1 | int length() 返回长度(字符数)。 |
2 | char charAt(int index) 返回此序列中指定索引处的char值 |
3 | String toString() 返回此序列这种数据的字符串表示形式 |
4 | public boolean equals(Object anObject) 将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。 |
序号 | 方法描述 |
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/
标签:字符,String,验证,int,StringBuffer,sgood,125,字符串,回文 来源: https://www.cnblogs.com/fenixG/p/13161798.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。