提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
一、题目-验证回文串
1.题目描述
2.思路与代码
2.1 思路
2.2 代码
总结
前言
提示:这里可以添加本文要记录的大概内容:
1月29日练习内容
提示:以下是本篇文章正文内容,下面案例可供参考
1.题目描述
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。
示例 1:
输入: s = "A man, a plan, a canal: Panama"
输出:true
解释:"amanaplanacanalpanama" 是回文串。
示例 2:
输入:s = "race a car"
输出:false
解释:"raceacar" 不是回文串。
示例 3:
输入:s = " "
输出:true
解释:在移除非字母数字字符之后,s 是一个空字符串 "" 。
由于空字符串正着反着读都一样,所以是回文串。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/valid-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.思路与代码
2.1 思路
1.判断输入的字符是否为空,若为空,直接输出true
2.因为回文串为左右对称相等的字符串,所以我们可以使用双指针的方法,左指针从左开始遍历字符串,右指针从最后倒序遍历字符串
3.因为题目中输入的字符串中有非字符,使用Character类中的isLetterOrDigit()函数可以判断是否为字符,当为字符是,左指针加1,右指针减一
4.使用Character类下的toLowerCase()函数将大写字符转为小写字符并比较,
5.使用双指针遍历字符,当左指针字符与右指针字符不相等时,输出false,否则为true
2.2 代码
代码如下(示例):
class Solution {
public boolean isPalindrome(String s) {
//空字符输出true
if(s.length() == 0){
return true;
}
//定义两个指针
int left = 0;//左指针
int right = s.length() - 1;//右指针
//遍历查找
while(left < right){
//因为只考虑字母的情况,遇到不是字母的,指针跳过即可
//左指针部分
while(left < right && !Character.isLetterOrDigit(s.charAt(left))){
left ++;
}
//右指针部分
while(left < right && !Character.isLetterOrDigit(s.charAt(right))){
right --;
}
//将大写转为小写,并判断左右两部分是否相等
//如果转化后的左右两部分不相等,则直接返回false
if(Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right)) ){
return false;
}
left ++;
right --;
}
return true;
}
}
总结
提示:这里对文章进行总结: