使用堆栈检查给定的字符串是否为回文

伙计们,

我最近接受了采访,并在Palindrome上提出了一个问题。

给定一个字符串(可能代表一个日期),检查它是否是回文或使用Stack。

我试图提出解决方案,但他并不喜欢这样。

任何人都可以在Java中向我展示它的代码片段吗?

谢谢

PS:这不是作业,实际的面试问题。

import java.util.Stack; public class PalindromeTest { public static void main(String[] args) { String input = "test"; Stack stack = new Stack(); for (int i = 0; i < input.length(); i++) { stack.push(input.charAt(i)); } String reverseInput = ""; while (!stack.isEmpty()) { reverseInput += stack.pop(); } if (input.equals(reverseInput)) System.out.println("Yo! that is a palindrome."); else System.out.println("No! that isn't a palindrome."); } } 

使用堆栈执行此操作的一般想法非常简单。 我没有时间学习语法和Java代码,但这是伪代码中的概念。

 string s = "test" for i=0 to s.length stack->push(s[i]) 

这会将t-> e-> s-> t从左向右推。 所以生成的堆栈看起来像这样:

TOP – > | t | s | e | t | < - BOTTOM

现在,由于字符串的最后一个字符位于顶部,因此您只需弹出直到堆栈为空并将其存储在字符串中。 这将与原始字符串相反。 然后你可以将这个字符串与原始字符串进行比较,如果匹配则你有一个回文。

在这种情况下,你会这样做:

 while(pop != '') string s += pop'd character 

所以你会抓住t,然后是s,然后是e,最后是第一个t并且有s = tset。 将其与“测试”进行比较,它不是回文。