import java.util.Queue; import java.util.ArrayDeque; // Stack: push/pop/peek/isEmpty/EmptyStackException // Queue: add/remove/element/isEmpty/NoSuchElementException public class Palindrome { public static boolean isPalindrome(String s) { Stack stack = new CarlStack(); Queue queue = new ArrayDeque(); for (int i = 0; i < s.length(); i++) { char character = s.charAt(i); // ignore non-letter characters if (Character.isLetter(character)) { // ignore upper/lower case differences character = Character.toLowerCase(character); stack.push(character); queue.add(character); } } while (!stack.isEmpty()) { if (stack.pop() != queue.remove()) { return false; } } return true; } public static void main(String[] args) { System.out.println(isPalindrome("racecar")); System.out.println(isPalindrome("tofu")); System.out.println(isPalindrome("Sit on a potato pan, Otis!")); } }