今天的一个笔试题:给定一个字符串,判断它是否回文,只考虑数字字母字符并忽略大小写
笔试的时候写了代码,但是写的不好,回来再写一次
思路就是先防范,然后将这个字符串转换为小写,定义两个指针,一个指向头,一个指向尾,跳过非字母和数字,然后比较,到最后还是一样的,那就是true
package cn.bl.test;
import org.junit.Test;
public class HuiWen {
public boolean isHuiWen(String str) {
if (str == null || str.length() == 0) {
return false;
}
str = str.toLowerCase();
int i = 0,j = str.length()-1;
while(i<j) {
while(i<j && !isCharOrNum(str.charAt(i))) {
i++;
}
while(i<j && !isCharOrNum(str.charAt(j))) {
j--;
}
while(str.charAt(i++) != str.charAt(j--)) {
return false;
}
}
return true;
}
public boolean isCharOrNum(char a) {
return a >= '0' && a <= 9 || a >= 'a' && a <= 'z';
}
@Test
public void test() {
String string = "A man ,a plan ,a canal:Panama";
System.out.println(isHuiWen(string));
String string2 = "race a car";
System.out.println(isHuiWen(string2));
}
}