色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java用隊(duì)列和棧判斷回文算法

回文算法是指判斷一個(gè)字符串是否是回文的算法。常用的解決方法是用隊(duì)列和棧來完成字符串的反轉(zhuǎn)和比較工作。在Java中,使用Queue和Stack類來實(shí)現(xiàn)這個(gè)過程。

public static boolean isPalindrome(String word) {
Stackstack = new Stack<>();
Queuequeue = new LinkedList<>();
for (int i = 0; i< word.length(); i++) {
char c = word.charAt(i);
stack.push(c);
queue.add(c);
}
while (!stack.isEmpty()) {
if (!stack.pop().equals(queue.remove())) {
return false;
}
}
return true;
}

首先,我們創(chuàng)建一個(gè)棧和隊(duì)列的實(shí)例。對(duì)于字符串中的每個(gè)字符,我們把它壓入棧中并添加到隊(duì)列中。一旦完成這個(gè)過程,我們就可以開始比較兩個(gè)數(shù)據(jù)結(jié)構(gòu)中的元素。通過依次彈出棧中的元素和刪除隊(duì)列中的元素,我們可以比較它們是否相等。如果它們不相等,那么字符串就不是回文的,否則它就是一個(gè)回文字符串。

在以上代碼中,隊(duì)列使用LinkedList類來實(shí)現(xiàn)。Stack類已經(jīng)被Java棄用,而使用Deque來代替則更好,同時(shí)還有避免了潛在的性能問題。

public static boolean isPalindrome(String word) {
Dequedeque = new LinkedList<>();
for (char c : word.toCharArray()) {
deque.addFirst(c);
}
StringBuilder sb = new StringBuilder();
while (!deque.isEmpty()) {
sb.append(deque.removeFirst());
}
return sb.toString().equalsIgnoreCase(word);
}

在這個(gè)例子中,我們使用Deque接口的LinkedList實(shí)現(xiàn)類。它提供了類似棧和隊(duì)列的方法。我們首先把每個(gè)字符添加到Deque的前面。接著我們構(gòu)造一個(gè)StringBuilder對(duì)象,并逐個(gè)刪除Deque隊(duì)列中的元素來構(gòu)造一個(gè)反轉(zhuǎn)的字符串。最后,我們比較反轉(zhuǎn)后的字符串是否等于原字符串,并且忽略大小寫.