这么长,这么复杂,而且到最后还没写对。
public class Demo {
// 判断是否为回文字符串
public static boolean isPalindrome(String content) {
int length=content.length();
char[] chars=new char[length]; //创建一个跟字符串一样长的数组,将字符串分成每一个字符存储到里面
int right=length-1;
int q=0;
int w=0;
//先判断长度是奇数还是偶数
if(length%2==0){ //说明是偶数
int middle=length/2;
char[] charsLeft=new char[middle];
char[] charsRight=new char[middle];
for (int i = 0; i < middle; i++) { //以中间那个字符为界限,分别将字符串左边和右边的字符存入到不同数组中
charsLeft[i]=chars[i];
}
for (int j =right; j >=middle+1; j--) {
charsRight[q]=chars[j];
q++;
}
for (int p = 0; p <charsLeft.length ; p++) { //判断两个字符数组是否相同
if(charsLeft[p]==charsRight[p]){
System.out.println("第"+p+charsLeft[p]+charsRight[p]+"个相同");
}else{
return false;
}
}
}else { //说明是奇数
int middle=(length-1)/2;
char[] charsLeft=new char[middle];
char[] charsRight=new char[middle];
for (int i = 0; i < middle; i++) { //以中间那个字符为界限,分别将字符串左边和右边的字符存入到不同数组中
charsLeft[i]=chars[i];
}
for (int j =right; j >=middle+1; j--) {
charsRight[w]=chars[j];
w++;
}
for (int p = 0; p <charsLeft.length ; p++) { //判断两个字符数组是否相同
if(charsLeft[p]==charsRight[p]){
System.out.println("第"+p+charsLeft[p]+charsRight[p]+"个相同");
}else{
return false;
}
}
}
return true;
}
public static void main(String[] args) {
System.out.println(isPalindrome("洞帘水挂水帘洞"));
System.out.println(isPalindrome("上海自来水来自海上"));
System.out.println(isPalindrome("maddam"));
System.out.println(isPalindrome("m"));
System.out.println(isPalindrome("maxcam"));
}
}
简单写法
public class Demo {
// 判断是否为回文字符串
public static boolean isPalindrome(String content) {
// 开始和结尾开始,依次往中间推进
int start = 0;
int end = content.length() - 1;
while (start < end) {
// 一旦出现不同的字符,则返回错误
if (content.charAt(start) != content.charAt(end)) {
return false;
}
start++;
end--;
}
return true;
}
public static void main(String[] args) {
System.out.println(isPalindrome("洞帘水挂水帘洞"));
System.out.println(isPalindrome("上海自来水来自海上"));
System.out.println(isPalindrome("maddam"));
System.out.println(isPalindrome("m"));
System.out.println(isPalindrome("maxcam"));
}
}