/ / Vérifie si la chaîne donnée est un palindrome utilisant la pile [fermé] - java, chaîne, pile, palindrome

Vérifiez si la chaîne donnée est un palindrome en utilisant la pile [fermé] - java, chaîne, pile, palindrome

Gens,

J'ai récemment été interviewé et j'ai eu une question sur Palindrome.

Étant donné une chaîne (qui pourrait représenter une date), vérifiez si c'est "une palindrome ou n'utilisant pas Stack.

J’ai essayé de trouver une solution, mais il n’a pas aimé.

Quelqu'un peut-il me montrer l'extrait de code correspondant en Java?

Merci

PS: Ce n’est pas un devoir, c’est une question d’entrevue.

Réponses:

12 pour la réponse № 1
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.");

}
}

5 pour la réponse № 2

L'idée générale de faire cela avec une pile est extrêmement simple. Je n’ai pas le temps de syntaxe et de code Java, mais c’est le concept en pseudocode.

string s = "test"
for i=0 to s.length
stack->push(s[i])

Cela pousserait t-> e-> s-> t de gauche à droite. Donc, la pile résultante ressemblerait à ceci:

TOP -> | t | s | e | t | <- BAS

Maintenant, puisque le dernier caractère de la chaîne est alluméEn haut, il vous suffit de faire apparaître la pile jusqu'à ce que la pile soit vide et de la stocker dans une chaîne. Ce sera l'inverse de la chaîne d'origine. Vous pouvez ensuite comparer cette chaîne avec l'original. Si elle correspond, vous avez un palindrome.

Dans ce cas, vous feriez:

while(pop != "")
string s += pop"d character

Donc vous attraperiez t, puis s, puis e et enfin le premier t et auriez s = tset. En comparant cela à "tester", ce n'est pas un palindrome.