题目:
简述题目:
其实就是判断字符串是不是回文,也就是说这个字符串是不是正着念反着念都一样。这个题目是要求,不考虑符号,只看字母和数字。
思路:
建一个列表或者数组吧(不过数组可能不太行,因为我的数组显示超时了。。),然后把满足要求的字符(字母和数字)放入列表中,在放入前做一个筛选,直接将小写字母和数字放进去,当遇到大写字母时,做一个转换,转换成小写字母再存进去。
挺重要的一个要注意空串,我们可以默认空串是回文!
代码:
import java.util.ArrayList;
public class isPalindrome125 {
public static boolean isPalindrome(String s) {
if(s.isEmpty()){
return true;
}else{
ArrayList<Character> list = new ArrayList<>();
for(int i = 0; i < s.length(); i++){
char ch = s.charAt(i);
if((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9')){
list.add(ch);
}else if(ch >= 'A' && ch <= 'Z'){
int change = ch + 'a' - 'A';
ch = (char) change;
list.add(ch);
}
}
for(int i = 0; i < list.size();i++){
if(list.get(i) != list.get(list.size() - i - 1)){
return false;
}
}
return true;
}
// if(s.isEmpty()){
// return true;
// }else{
// char[] sArray = new char[s.length()];
// int k = 0;
// s = s.toLowerCase();
// for(int i = 0 ; i < s.length() ;i++){
// char ch = s.charAt(i);
// if((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9')){
// sArray[k] = ch;
// k++;
// }
// }
// for (int i = 0; i <= sArray.length/2; i++) {
// if(sArray[i] != sArray[k - i - 1]){
// return false;
// }
// }
// return true;
// }
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "A man, a plan, a canal: Panama";
System.out.println(isPalindrome(s));
}
}