java判断回文
时间: 2023-10-11 09:21:08 浏览: 61
判断一个字符串是否是回文可以使用双指针的方式,一个指针从字符串的起始位置开始,另一个指针从字符串的末尾位置开始,逐个比较字符是否相同。如果比较过程中出现字符不同,则该字符串不是回文;如果比较过程中所有字符都相同,则该字符串是回文。
以下是Java实现代码:
```java
public static boolean isPalindrome(String str) {
if (str == null) {
return false;
}
int left = 0;
int right = str.length() - 1;
while (left < right) {
if (str.charAt(left) != str.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
```
示例:
```java
String str = "racecar";
boolean isPalindrome = isPalindrome(str);
System.out.println(isPalindrome); // true
```
注意:以上实现方式忽略了字符串中的空格和标点符号。如果需要考虑这些情况,可以使用正则表达式或其他方法进行处理。
相关问题
java 判断回文
判断一个数字或字符串是否是回文可以使用多种方法,其中包括纯数字判断、截取字符串比较和字符串反转后比较三种常见方法。
纯数字回文的方法示例代码如下:
```java
public static boolean isPalindrome(int n) {
int temp = n;
int m = 0;
while (temp != 0) {
m = m * 10 + temp % 10;
temp /= 10;
}
if (m == n) {
return true;
} else {
return false;
}
}
```
使用截取字符串的方式比较回文的方法示例代码如下:
```java
public static boolean isPalindrome(String str) {
int count = 0;
for (int i = 0; i < str.length() / 2; i++) {
if ((str.substring(i, i + 1)).equals(str.substring(str.length() - 1 - i, str.length() - i))) {
count++;
}
}
if (count == str.length() / 2) {
return true;
} else {
return false;
}
}
```
将字符串反转后逐一比较的方法示例代码如下:
```java
public static boolean isPalindrome(String str) {
StringBuilder s1 = new StringBuilder(str);
s1.reverse();
int n = str.length();
int count = 0;
for (int i = 0; i < n; i++) {
if (str.charAt(i) == s1.charAt(i)) {
count++;
}
}
if (count == n) {
return true;
} else {
return false;
}
}
```
以上是三种常见的判断回文的方法,你可以根据自己的需求选择其中一种方法来使用。
Java判断回文串
要判断一个字符串是否为回文串,可以先将字符串反转,然后与原字符串进行比较。如果两个字符串相等,则说明原字符串是回文串。
下面是一个 Java 实现:
```java
public class Palindrome {
public static boolean isPalindrome(String str) {
String reversed = new StringBuilder(str).reverse().toString();
return str.equals(reversed);
}
public static void main(String[] args) {
String str = "level";
boolean result = isPalindrome(str);
System.out.println(result); // true
}
}
```
这里使用了 StringBuilder 类的 reverse() 方法将字符串反转,然后使用 equals() 方法比较两个字符串是否相等。注意,这个方法的时间复杂度为 O(n),因为涉及到了字符串的反转操作。如果要优化时间复杂度,可以考虑使用双指针法或者中心扩散法来判断回文串。