用Java编写一个方法,判断一个字符串是否是回文字符串:例如:abba,aba是回文字符串 abab,aabb不是回文字符串
时间: 2023-06-22 15:27:11 浏览: 206
可以使用双指针法,从字符串两端开始比较字符是否相等,直到两个指针相遇或者中间有不相等的字符。
以下是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
```
相关问题
判断回文 分数 35 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个程序判定给定的字符向量是否为回文,用栈实现。(提示:将一半字符入栈) 输入格式: 输入任意字符串。 输出格式: 若字符串是回文,输出:xxxx是回文。 若字符串不是回文,输出:xxxx不是回文。 输入样例: abba 输出样例: abba是回文。 输入样例: abdba 输出样例: abdba是回文。 输入样例: good 输出样例: good不是回文。
以下是用栈实现判断回文的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
typedef struct {
char data[MAX_SIZE];
int top; // 栈顶指针
} Stack;
void initStack(Stack *s) {
s->top = -1; // 初始化栈顶指针为-1
}
int isEmpty(Stack *s) {
return s->top == -1;
}
int isFull(Stack *s) {
return s->top == MAX_SIZE - 1;
}
void push(Stack *s, char c) {
if (isFull(s)) {
printf("Stack is full!\n");
return;
}
s->data[++s->top] = c;
}
char pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty!\n");
return '\0';
}
return s->data[s->top--];
}
int main() {
char str[MAX_SIZE];
Stack s;
int i, len;
printf("Input a string: ");
scanf("%s", str);
len = strlen(str);
initStack(&s);
for (i = 0; i < len / 2; i++) {
push(&s, str[i]);
}
for (i = (len + 1) / 2; i < len; i++) {
if (str[i] != pop(&s)) {
printf("%s不是回文。\n", str);
return 0;
}
}
printf("%s是回文。\n", str);
return 0;
}
```
首先输入一个字符串,然后定义一个栈s,将字符串的前一半字符入栈,然后从字符串的后一半字符开始依次出栈并与原字符串的对应字符比较,如果字符不相等,则该字符串不是回文;否则,该字符串是回文。
编写一个程序,判断给定的字符串是否是回文串。 题目描述:回文串是指一个字符串正读和反读都相同 比如: aba abba abcba等是回文串
为了编写一个Java程序来判断给定字符串是否为回文串,你可以使用双指针技巧,一个指向字符串开头,另一个指向结尾,逐个比较字符直到它们相遇或交叉。以下是简单的实现代码:
```java
public class PalindromeChecker {
public static boolean isPalindrome(String input) {
// 移除空格和标点,并转为小写,简化比较
input = input.replaceAll("\\W", "").toLowerCase();
// 初始化两个指针,一个指向开始,一个指向结束
int left = 0;
int right = input.length() - 1;
// 当左指针小于等于右指针时继续比较
while (left < right) {
// 如果左右指针对应的字符不同,返回false
if (input.charAt(left) != input.charAt(right)) {
return false;
}
left++; // 左指针向右移动一位
right--; // 右指针向左移动一位
}
// 如果所有字符都匹配,则输入是回文串
return true;
}
public static void main(String[] args) {
System.out.println(isPalindrome("A man, a plan, a canal: Panama")); // 输出:true
System.out.println(isPalindrome("hello world")); // 输出:false
}
}
```
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)