
Write a C++ function that checks whether a given string is a palindrome.
A palindrome is a word, phrase, or sequence that reads the same forwards and backwards, ignoring spaces, punctuation, and capitalization.
Your program should use a combination of a stack and a queue to perform the check. It should return true if the input string is a palindrome and false otherwise.
Function Signature
bool isPalindrome(const std::string& str);
Input
A string str (1 <= str.length() <= 10^5) consisting of alphanumeric characters, punctuation and spaces.
Output
true if str is a palindrome, false otherwise.
Example
bool result1 = isPalindrome("A man a plan a canal Panama"); // true
bool result2 = isPalindrome("race car"); //
true bool result3 = isPalindrome("hello world"); // false
- Convert the input string to lowercase to ignore capitalization.
- Remove spaces and punctuation from the string to focus only on alphanumeric characters.
- Use a stack to push characters onto it as you iterate through the string.
- Use a queue to enqueue characters as you iterate through the string in reverse.
- Compare characters popped from the stack with characters dequeued from the queue to check if they match.
- Use the C++ Standard Library's std::stack and std::queue for this exercise.
Constraints
Do not use additional data structures or containers beyond the stack and queue for this exercise.
Sample Palindromes (for testing)
- racecar
- deified
- level
- rotor
- 123454321
- Madam in Eden, I'm Adam.
- Was it a car or a cat I saw?

Step by stepSolved in 3 steps with 2 images

- I am new to Haskell and I need someone to explain the syntax of this function. The function is supposed to take a single integer parameter. It indicates the maximum value of Fibonacci numbers that will be in the list and it uses recursion to generate the list. fibList n = go n 1 1 where go n f s | (f+s) > n = [] | otherwise = (f+s) : go n s (f+s)arrow_forwardIn Python programming languagearrow_forwardWrite a function that will accept a list of integers and return the sum of the contents of the list(……if the list contains 1,2,3 it will return 6…..)arrow_forward
- PLEASE DO NOT USE BUILT IN FILES OR FUNCTIONS! Write a program in c++ and make sure it works, that reads a list of students (first names only) from a file. It is possible for the names tobe in unsorted order in the file but they have to be placed in sorted order within the linked list.The program should use a doubly linked list.Each node in the doubly linked list should have the student’s name, a pointer to the next student, and apointer to the previous student. Here is a sample visual. The head points to the beginning of the list. Thetail points to the end of the list.When inserting consider all the following conditions:if(!head){ //no other nodes}else if (strcmp(data, head->name)<0){ //smaller than head}else if (strcmp(data, tail->name)>0){ //larger than tail}else{ //somewhere in the middle} When deleting a student consider all the following conditions:student may be at the head, the tail or in the middleBelow, you will find a sample of what the…arrow_forwardWrite a function count_evens(nums) that takes a list of ints called nums and returns the number of even ints in the given list. Note: the % "mod" operator computes the remainder, e.g. 5 % 2 is 1.arrow_forwardDefine a function named check_game_finished (encrypted_list) which takes a list of characters as a parameter. The function returns True if the game is over, and False otherwise. The game is over when there is no longer any "*" characters in the parameter list. For example: Test Result False True data = ['h', '*', ¹*¹, ¹*¹, ¹*'] print(check_game_finished (data)) data = ['h', 'e', '1', '1', 'o'] print(check_game_finished(data)) data = ['s', ¹*¹ 'd'] False print(check_game_finished (data))arrow_forward
- Define a function named display_word (encrypted_list) which takes a list of characters as a parameter. The function prints the parameter list as shown in the examples below. Note: you can assume that the parameter list is not empty. For example: Test Result **¹, ¹*¹'] GUESS THE WORD: h**** data = ['h', '*', '*', display_word (data) ''*', '*', '*'] GUESS THE WORD: s****** data = ['s', '*', display_word (data)arrow_forwardCode you provide code in python?arrow_forwardUsing c++ Contact list: Binary Search A contact list is a place where you can store a specific contact with other associated information such as a phone number, email address, birthday, etc. Write a program that first takes as input an integer N that represents the number of word pairs in the list to follow. Word pairs consist of a name and a phone number (both strings). That list is followed by a name, and your program should output the phone number associated with that name. Define and call the following function. The return value of FindContact is the index of the contact with the provided contact name. If the name is not found, the function should return -1 This function should use binary search. Modify the algorithm to output the count of how many comparisons using == with the contactName were performed during the search, before it returns the index (or -1). int FindContact(ContactInfo contacts[], int size, string contactName) Ex: If the input is: 3 Frank 867-5309 Joe…arrow_forward
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education





