概述
有效回文串
有效回文串应该算是一到高频算法题,直接看题目。
给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。
Example
“A man, a plan, a canal: Panama” 是一个回文。
“race a car” 不是一个回文。
也就是回文串的定义是在忽略大小写,各种标点符号的情况下,如果一个字符串正着看和反着看是一样的,那么该字符串就是有效回文串。所以思路应该是先把字符串中的各种符号去掉,只留下数字和字母,并且全部转化为小写,然后将字符串倒置,一一比较各个位置是否相等。那么如何去掉原来字符串中的各种符号呢,这里我借助字符0在ASC||表中为48, a在字符表中为97来判断的。具体代码如下:
public static boolean isPalindrome(String s){
String newString1 = s.trim().toLowerCase();
StringBuffer s1 = new StringBuffer();
for(int i = 0;i < newString1.length();i++){
if((newString1.charAt(i) >= 48 && newString1.charAt(i) <= 57) ||(newString1.charAt(i) >= 97 && newString1.charAt(i) <= 122)){
s1.append(newString1.charAt(i));
}
}
StringBuffer s2 = new StringBuffer(s1);
s2.reverse();
int count = 0;
for (int i = 0; i < s1.length(); i++) {
if (s1.charAt(i) == s2.charAt(i)) {
count++;
}
}
if (count == s1.length()){
return true;
}else{
return false;
}
}
要注意的就是if条件里的判断,数字是从48到57,字母是从97到122。
顺便贴上统计一个字符串中各个字母出现多少次的代码
int[] arr = new int[26];
String str = s.trim().toLowerCase();
for(int i = 0;i < str.length();i++){
char c = str.charAt(i);
int index = c - 'a';
if(index >= 0 && index <=25){
arr[index] = arr[index] + 1;
}
}
for (int i = 0; i < arr.length; i++){
if(arr[i]!=0){
System.out.println("字母"+(char)(i+'a')+"出现:"+arr[i]+"次");
}
}
最后
以上就是典雅帅哥为你收集整理的有效回文串的全部内容,希望文章能够帮你解决有效回文串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复