题目
题目的意思是,判断一个字符串是否是回文字符串,只考虑字母和数字,忽略大小写。
此处将空字符串定义为回文字符串,即如果一个字符串只有非字母和非数字,也是回文字符串。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或者扫描下方二维码添加关注,关注测试开发工程师的成长之路)