Java判断回文串
时间: 2023-08-05 15:07:35 浏览: 194
要判断一个字符串是否为回文串,可以先将字符串反转,然后与原字符串进行比较。如果两个字符串相等,则说明原字符串是回文串。
下面是一个 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),因为涉及到了字符串的反转操作。如果要优化时间复杂度,可以考虑使用双指针法或者中心扩散法来判断回文串。
相关问题
java判断回文字符串
回文字符串是指正读和反读都相同的字符串,例如“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判断回文字符串
### Java 实现判断回文字符串
#### 方法一:双指针法
通过设置两个指针分别指向字符串的头部和尾部,逐步向中心靠拢并对比对应位置上的字符。这种方法能够有效地减少不必要的计算。
```java
public class PalindromeChecker {
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;
}
}
return true;
}
}
```
此段代码展示了如何利用双指针对给定字符串进行回文检测[^4]。
#### 方法二:反转字符串逐位比较
该方式先将原字符串逆序处理得到一个新的字符串副本,再依次遍历两者之间每一位字符是否一致完成判定操作。
```java
public class PalindromeCheckerReverseCompare {
private static boolean checkPalindromeByReversingString(String inputStr){
String reversedStr = new StringBuilder(inputStr).reverse().toString();
for(int index=0;index<inputStr.length();++index){
char originalChar=inputStr.charAt(index);
char reverseChar=reversedStr.charAt(index);
if(originalChar!=reverseChar){
return false;
}
}
return true;
}
public static void main(String[] args) {
System.out.println(checkPalindromeByReversingString("racecar")); // 输出: true
System.out.println(checkPalindromeByReversingString("hello")); // 输出: false
}
}
```
上述例子说明了另一种基于字符串翻转后的逐字节对照来进行回文检验的技术[^1].
#### 方法三:首尾字符直接比较
这里介绍了一种更为简洁直观的办法——仅需构建一个辅助函数用于递归地检查两端字符直至相遇为止即可得出结论。
```java
public class SimplePalindromeCheck {
public static boolean simpleIsPalindrome(String word, int start, int end) {
if(start >= end) {return true;}
if(word.charAt(start)!=word.charAt(end)){
return false;
}else{
return simpleIsPalindrome(word,start+1,end-1);
}
}
public static void main(String []args){
System.out.println(simpleIsPalindrome("level",0,"level".length()-1)); // 输出:true
System.out.println(simpleIsPalindrome("world",0,"world".length()-1));// 输出:false
}
}
```
这段程序实现了最基础也是最容易理解的一种回文测试逻辑[^3].
阅读全文