java判断回文字符串
时间: 2023-09-18 19:14:25 浏览: 179
回文字符串是指正读和反读都相同的字符串,例如“level”、“deified”。判断回文字符串的方法可以将字符串分别从首尾开始比较,如果对应的字符都相同,则继续比较下一个字符,直到比较到中间位置或者发现有不相同的字符为止。以下是Java实现回文字符串判断的示例代码:
```java
public static boolean isPalindrome(String str) {
int len = str.length();
// 遍历字符串的前半部分
for (int i = 0; i < len / 2; i++) {
// 比较对应的字符是否相等
if (str.charAt(i) != str.charAt(len - i - 1)) {
return false;
}
}
return true;
}
```
在上述代码中,`len / 2`是为了避免重复比较,因为字符串的长度可能是奇数或偶数。如果是奇数,中间的字符只需要比较一次即可,因此只需要遍历前半部分即可。如果是偶数,前半部分和后半部分对应的字符都要进行比较。`str.charAt(i)`和`str.charAt(len - i - 1)`分别表示字符在字符串中的位置,其中`len - i - 1`表示字符在字符串末尾的位置。如果发现不相同的字符,则直接返回`false`,否则遍历完成后返回`true`。
相关问题
用Java编写一个方法,判断一个字符串是否是回文字符串:例如:abba,aba是回文字符串 abab,aabb不是回文字符串
可以使用双指针法,从字符串两端开始比较字符是否相等,直到两个指针相遇或者中间有不相等的字符。
以下是Java实现:
```java
public static boolean isPalindrome(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;
}
```
使用方法:
```java
String str1 = "abba";
String str2 = "aba";
String str3 = "abab";
String str4 = "aabb";
System.out.println(isPalindrome(str1)); // true
System.out.println(isPalindrome(str2)); // true
System.out.println(isPalindrome(str3)); // false
System.out.println(isPalindrome(str4)); // false
```
用java写一个判断回文字符串的程序
### 回答1:
可以这样写:public class Palindrome { public static boolean isPalindrome(String str) { int i = 0;
int j = str.length() - 1; while (i < j) {
if (str.charAt(i) != str.charAt(j)) {
return false;
}
i++;
j--;
} return true;
} public static void main(String[] args) {
String str1 = "山西运煤车煤运西山";
System.out.println(isPalindrome(str1));
}
}
### 回答2:
可以使用以下的Java程序来判断一个字符串是否是回文字符串:
```java
import java.util.Scanner;
public class Palindrome {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String str = scanner.nextLine();
if (isPalindrome(str)) {
System.out.println(str + " 是一个回文字符串。");
} else {
System.out.println(str + " 不是一个回文字符串。");
}
}
public static boolean isPalindrome(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;
}
}
```
这个程序通过一个`isPalindrome`方法来判断一个字符串是否是回文字符串。它使用两个指针`left`和`right`,初始时分别指向字符串的第一个字符和最后一个字符。在每一步循环中,它比较`left`和`right`所指向的字符是否相等,如果不相等就返回`false`,表示该字符串不是回文字符串。如果循环结束后都没有返回`false`,则表示该字符串是回文字符串,返回`true`。在`main`方法中,它首先获取用户输入的字符串,然后调用`isPalindrome`方法进行判断,最后输出相应的结果。
### 回答3:
判断回文字符串的程序可以通过以下Java代码实现:
```java
import java.util.Scanner;
public class PalindromeCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String input = scanner.nextLine();
if (isPalindrome(input)) {
System.out.println("是回文字符串");
} else {
System.out.println("不是回文字符串");
}
}
public static boolean isPalindrome(String str) {
// 去除字符串中的空格和标点符号,并转换为全部小写
String formattedStr = str.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
// 使用双指针法判断是否为回文字符串
int left = 0;
int right = formattedStr.length() - 1;
while (left < right) {
if (formattedStr.charAt(left) != formattedStr.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
}
```
该程序先要求用户输入一个字符串,然后调用`isPalindrome`方法判断输入的字符串是否为回文字符串。`isPalindrome`方法会做以下几个步骤:
1. 首先使用正则表达式将字符串中的非字母、非数字字符去除,并将字符串转换为全部小写。这是因为回文字符串不区分大小写,且忽略空格和标点符号。
2. 接下来使用双指针法判断是否为回文字符串。定义一个左指针和一个右指针,初始分别指向字符串的首尾位置。如果左指针所指的字符不等于右指针所指的字符,则不是回文字符串,返回`false`;如果指针所指的字符相等,则继续将左指针向右移动,右指针向左移动,继续比较。直到左指针大于等于右指针时停止循环。
3. 如果循环结束,即左指针大于等于右指针,说明字符串是回文字符串,返回`true`;否则返回`false`。
最后,根据返回的判断值,输出相应的结果,即输入的字符串是回文字符串还是不是回文字符串。
阅读全文