设计一个算法利用顺序栈判断用户输入的宇符串表达式是否为回文(例如: 123321是回文,abcdcba是回文) 输入格式: 输入一行字符串 输出格式: 输出“是回文”或“不是回文 输入样例: 在这里给出一组输入。例如: 123321 输出样例: 在这里给出相应的输出。例如: 是回文
时间: 2024-02-22 14:55:21 浏览: 81
以下是基于顺序栈实现回文判断的算法:
1. 初始化一个空的顺序栈S。
2. 遍历字符串中的每个字符,将其依次压入栈S中。
3. 遍历完整个字符串后,从栈S中弹出每个字符,与原字符串中的字符依次比较,如果都相等,则说明原字符串是回文,输出“是回文”;否则,说明原字符串不是回文,输出“不是回文”。
以下是该算法的 Python 代码实现:
```python
def is_palindrome(s):
stack = []
for ch in s:
stack.append(ch)
for ch in s:
if ch != stack.pop():
return '不是回文'
return '是回文'
s = input().strip()
print(is_palindrome(s))
```
示例输入:123321
示例输出:是回文
以下是该算法的 Java 代码实现:
```java
import java.util.Scanner;
import java.util.Stack;
public class Palindrome {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
System.out.println(isPalindrome(s));
}
public static String isPalindrome(String s) {
Stack<Character> stack = new Stack<>();
for (char ch : s.toCharArray()) {
stack.push(ch);
}
for (char ch : s.toCharArray()) {
if (ch != stack.pop()) {
return "不是回文";
}
}
return "是回文";
}
}
```
示例输入:123321
示例输出:是回文
阅读全文