欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java用堆和隊列判斷回文

李昊宇1年前7瀏覽0評論

回文(Palindrome)指的是正讀和反讀都相同的詞語或者句子,比如“level”、“racecar”、“A man, a plan, a canal, Panama!”。下面介紹如何使用 Java 中的堆和隊列來判斷一個字符串是否為回文。

使用堆(Heap)來實現:

import java.util.PriorityQueue;
public class PalindromeHeap {
public boolean isPalindrome(String s) {
PriorityQueueheap = new PriorityQueue<>(s.length());
for (int i = 0; i< s.length(); i++) {
heap.offer(s.charAt(i));
}
StringBuilder sb = new StringBuilder();
while (!heap.isEmpty()) {
sb.append(heap.poll());
}
return sb.toString().equals(sb.reverse().toString());
}
}

首先,將字符串中的每個字符加入到一個堆中。然后將堆中的每個字符依次加入到一個 StringBuilder 中,再將 StringBuilder 反轉。如果反轉后的字符串和原先的字符串相等,那么說明原先的字符串是回文。

使用隊列(Queue)來實現:

import java.util.LinkedList;
import java.util.Queue;
public class PalindromeQueue {
public boolean isPalindrome(String s) {
Queuequeue = new LinkedList<>();
for (int i = 0; i< s.length(); i++) {
queue.offer(s.charAt(i));
}
StringBuilder sb = new StringBuilder();
while (!queue.isEmpty()) {
sb.append(queue.poll());
}
return sb.toString().equals(sb.reverse().toString());
}
}

與使用堆類似,使用隊列也是先將字符串中的每個字符加入到隊列中,然后將隊列中的每個字符依次加入到一個 StringBuilder 中,再將 StringBuilder 反轉。如果反轉后的字符串和原先的字符串相等,那么說明原先的字符串是回文。

綜上所述,使用堆和隊列都可以比較簡單地判斷一個字符串是否為回文,但是在實際應用中,由于隊列的出隊比堆的出隊更快,所以通常使用隊列來實現。