在Java中,判断一个字符串是否对称,可以通过比较字符串与其反转后的字符串是否相等来实现,下面将详细介绍如何实现这个功能。

1、使用StringBuilder的reverse()方法
我们可以使用StringBuilder类的reverse()方法来反转字符串,将反转后的字符串与原字符串进行比较,如果相等,则说明字符串是对称的。
示例代码:
public class StringSymmetry {
public static void main(String[] args) {
String str = "abcdcba";
System.out.println("字符串"" + str + ""是否对称:" + isSymmetric(str));
}
public static boolean isSymmetric(String str) {
StringBuilder sb = new StringBuilder(str);
return str.equals(sb.reverse().toString());
}
}
2、使用双指针法
另一种方法是使用双指针法,从字符串的两端开始,逐个比较对应位置的字符是否相等,如果所有对应位置的字符都相等,则说明字符串是对称的。
示例代码:
public class StringSymmetry {
public static void main(String[] args) {
String str = "abcdcba";
System.out.println("字符串"" + str + ""是否对称:" + isSymmetric(str));
}
public static boolean isSymmetric(String str) {
int left = 0;
int right = str.length() 1;
while (left < right) {
if (str.charAt(left) != str.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
}
3、使用数组和循环遍历
还可以将字符串转换为字符数组,然后使用循环遍历数组,比较对应位置的字符是否相等,如果所有对应位置的字符都相等,则说明字符串是对称的。
示例代码:
public class StringSymmetry {
public static void main(String[] args) {
String str = "abcdcba";
System.out.println("字符串"" + str + ""是否对称:" + isSymmetric(str));
}
public static boolean isSymmetric(String str) {
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length / 2; i++) {
if (chars[i] != chars[chars.length 1 i]) {
return false;
}
}
return true;
}
}
4、使用Java 8的Stream API和Lambda表达式
我们还可以使用Java 8的Stream API和Lambda表达式来实现这个功能,将字符串转换为字符数组,然后使用Stream API对数组进行遍历,比较对应位置的字符是否相等,如果所有对应位置的字符都相等,则说明字符串是对称的。
示例代码:
import java.util.stream.IntStream; import java.util.stream.Collectors; import java.util.List; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.stream.IntStream; import java.util.stream.Collectors; import java.util.stream.StreamSupport; import java.util.stream.Stream; import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Collectors; import java.util.stream.StreamSupport; import java.util.stream.Stream; import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Collectors; import java.util.stream.StreamSupport; import java.util.stream.Stream; import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Collectors; import java.util.stream.StreamSupport; import java.util.stream.Stream; import java