我最近接受了采访,并在回文中得到了一个问题。
给定一个字符串(可能代表一个日期),检查它是否是 回文或使用堆栈。
我试图想出解决方案,但他不喜欢那样。
任何人都可以在Java中看到它的代码片段吗?
谢谢
PS:这不是一个家庭作业,实际的面试问题。
我最近接受了采访,并在回文中得到了一个问题。
给定一个字符串(可能代表一个日期),检查它是否是 回文或使用堆栈。
我试图想出解决方案,但他不喜欢那样。
任何人都可以在Java中看到它的代码片段吗?
谢谢
PS:这不是一个家庭作业,实际的面试问题。
用堆栈做这件事的一般想法非常简单。我没有时间语法和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。 比较这个“测试”,它不是回文。
import java.util.Stack;
public class PalindromeTest {
public static void main(String[] args) {
String input = "test";
Stack<Character> stack = new Stack<Character>();
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.");
}
}
对于空格和区分大小写的字符串,使用'input = input.replaceAll(“\\ s”,“”)。toLowerCase();' – Omore
发布您的解决方案不起作用 –
他*提到他为什么不喜欢它? – alex
发布您回答的代码片段! – Devrath