题目
此处将空字符串定义为回文字符串,即如果一个字符串只有非字母和非数字,也是回文字符串。eg:!%^^^^%%,是一个回文字符串。
思路及实现
- 使用JVA中char的工具类Character进行字符串的操作,其中使用到的方法作用
//方法 isLetterOrDigit(char ch) 确定指定字符是否为字母或数字。
//charAt(int index) 返回指定索引处的 char 值。
//toLowerCase(char ch) 使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。
/**
* 判断是否是回文的方法
* 题目规定空字符串也是回文,如果一个字符串只有非字母和非数字的字符,也是回文字符串
* @param s
* @return
*/
public boolean isPalindrome(String s) {
int i = 0;
int j = s.length() - 1;
while (i < j) {
//嵌套一层循环,用以跳过非数字、非字母的字符
//这里需要再次判断i是否小于j,因为while循环对i值做了更新,外层循环的i<j不一定成立了,如果j <= i,跑过了
while (!Character.isLetterOrDigit(s.charAt(i)) && i < j) {
i++;
}
while (!Character.isLetterOrDigit(s.charAt(j)) && i < j) {
j--;
}
//遇到i和j指向的字母数字不相等,即不构成回文,返回false,循环结束
if (Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j))) {
return false;
}
i++;
j--;
}
return true;
}
小知识大道理,一点一滴积累。给点个赞吧
(个人微信公众号:TestOnTheRoad,搜索ID或者扫描下方二维码添加关注,关注测试开发工程师的成长之路)