如何用stack和queue判断回文
时间: 2024-02-25 13:52:34 浏览: 114
使用栈和队列可以判断一个字符串是否为回文。具体步骤如下:
1. 将字符串中的所有字母转化为小写字母,并去除字符串中的空格和标点符号。
2. 将字符串中的每个字符依次添加到栈和队列中。
3. 从栈和队列中依次弹出字符进行比较,如果所有字符都相同,则字符串为回文,否则不是。
下面是 Java 代码实现:
```
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class Palindrome {
public static boolean isPalindrome(String str) {
// 将字符串中的所有字母转化为小写字母,并去除空格和标点符号
str = str.toLowerCase().replaceAll("[^a-z0-9]", "");
// 将字符串中的每个字符依次添加到栈和队列中
Stack<Character> stack = new Stack<>();
Queue<Character> queue = new LinkedList<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
stack.push(c);
queue.offer(c);
}
// 从栈和队列中弹出字符进行比较
while (!stack.isEmpty() && !queue.isEmpty()) {
char c1 = stack.pop();
char c2 = queue.poll();
if (c1 != c2) {
return false;
}
}
return true;
}
public static void main(String[] args) {
String str1 = "A man, a plan, a canal: Panama";
String str2 = "race a car";
System.out.println(isPalindrome(str1)); // 输出 true
System.out.println(isPalindrome(str2)); // 输出 false
}
}
```
在上面的代码中,我们首先将字符串中的所有字母转化为小写字母,并去除空格和标点符号,然后使用栈和队列分别保存每个字符。最后从栈和队列中依次弹出字符进行比较。如果所有字符都相同,则字符串为回文,否则不是。
阅读全文