我最近接受了採訪,並在迴文中得到了一個問題。
給定一個字符串(可能代表一個日期),檢查它是否是 迴文或使用堆棧。
我試圖想出解決方案,但他不喜歡那樣。
任何人都可以在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