Java équilibré expressions vérifier {[()]}
Je suis en train de créer un programme qui prend une chaîne de caractères comme argument dans son constructeur. J'ai besoin d'une méthode qui vérifie si la chaîne est un équilibre entre parenthèses de l'expression. Il doit gérer ( { [ ] } ) ouvert doit faire l'équilibre avec son correspondant crochet de fermeture. Par exemple, un utilisateur pourrait entrer [({})] qui serait équilibré et }{ serait déséquilibré. Cela n'a pas besoin de manipuler des lettres ou des chiffres. J'ai besoin d'utiliser une pile pour ce faire.
On m'a donné ce pseudo-code, mais ne peux pas comprendre comment le mettre en œuvre en java. Tout conseil serait formidable.
Mise à jour - désolé, j'ai oublié de poster ce que j'ai eu jusqu'à présent. Son tout foiré, car au début j'ai essayé d'utiliser char et puis j'ai essayé un tableau.. je ne suis pas sûr de savoir exactement où aller.
import java.util.*;
public class Expression
{
Scanner in = new Scanner(System.in);
Stack<Integer> stack = new Stack<Integer>();
public boolean check()
{
System.out.println("Please enter your expression.");
String newExp = in.next();
String[] exp = new String[newExp];
for (int i = 0; i < size; i++)
{
char ch = exp.charAt(i);
if (ch == '(' || ch == '[' || ch == '{')
stack.push(i);
else if (ch == ')'|| ch == ']' || ch == '}')
{
//nothing to match with
if(stack.isEmpty())
{
return false;
}
else if(stack.pop() != ch)
{
return false;
}
}
}
if (stack.isEmpty())
{
return true;
}
else
{
return false;
}
}
}
void main(String[] args...) { //code here };
Désolé d'être dur, mais vous avez même le pseudo-code, vous devez le traduire en Java. Ou au moins essayer et échouer sur votre propre... Peut-être, si il n'y avait aucun signe d'effort dans votre question - comme détaillé dans le FAQ - aurait permis d'obtenir de l'aide plutôt que de certaines rassis, le cynisme...j'ai posté ce que j'avais eu à travailler sur, pour l'instant j'ai oublié de le poster dans le début, merci beaucoup
Vous commencez par pousser l'indice de la boucle sur la pile, et puis vous essayez et de la pop off d'un personnage. Vous devez utiliser un Personnage de la pile et de pousser à l'ouverture des accolades sur elle. Alors, quand vous trouvez une accolade de fermeture, de la pop, l'élément supérieur hors tension et voir si elle correspond bien à l'ouvrir corset. Puis continuer. Si vous avez une pile vide à la fin, la chaîne est équilibré.
codereview.stackexchange.com/questions/45916/... le vérifier, vous obtiendrez la pâte idée.
OriginalL'auteur Jess Anastasio | 2014-04-20
Vous devez vous connecter pour publier un commentaire.
J'espère que ce code peut vous aider:
OriginalL'auteur Smartoop
OriginalL'auteur Madalina Raicu
Le pseudo équivalent de code java de la mise en œuvre de l'algorithme est de java est comme suit.
braces
données bien sûr!)OriginalL'auteur Yogen Rai
Il est important d'utiliser une pile pour la pousser à l'ouverture des symboles sur elle, puis quand vous venez à travers une accolade de fermeture vous pop de l'élément en haut de la pile, puis vous vérifiez pour voir si elle correspond au type de la fermeture de corset. Voici une implémentation de java.
char
interrupteur cas, et vous pouvez comparer (même un int) contre un char littérale.^la vérité, probablement préférable d'utiliser char, va mettre à jour maintenant.
OriginalL'auteur Neurax
Avez-vous l'esprit si je vais l'ajouter à ma freaky-style solution basée sur JavaScript?
C'est un ad-hoc des trucs, pas pour la production, mais pour les entrevues, ou quelque chose comme ça. Ou juste pour le plaisir.
Le code:
Vérifie:
Explication:
Il va supprimer récursivement ferme paires "()", "[]" et "{}":
Si, à la fin longueur de la chaîne est vide - il est
true
, si ce n'est - ilfalse
.P. S. Quelques réponses
Parce que c'est lent, et ne se soucient pas de la possibilité de certains autres caractères entre les paires.
Parce que je suis un développeur frontend, mais a rencontré la même tâche, peut-être, il peut être utile pour quelqu'un. Et le JS est également JVM lang =)
Parce que tous les JS développeurs sont fous, c'est pourquoi.
OriginalL'auteur Sergei Panfilov
Vous poussent
i
- l'index - sur la pile, et de comparer par rapport àch
. Vous devriez push et popch
.OriginalL'auteur Maarten Bodewes
S'il vous plaît essayer cette.
OriginalL'auteur Sami
C'est ma mise en œuvre de cette question. Ce programme permet à des numéros, des lettres et des caractères spéciaux avec la chaîne d'entrée, mais tout simplement les ignorer lors du traitement de la chaîne.
CODE:
OriginalL'auteur abubakkar
C'est ma propre mise en œuvre. J'ai essayé de faire le plus court d'une façon la plus claire possible:
OriginalL'auteur FerDensetsu
Similaire à celle du code ci-dessus en JAVA, mais Il a besoin d'un plus else ajouté afin d'éviter la pile de comparaison avec d'autres personnages que les accolades :
else if(bracketPair.containsValue(strExpression.charAt(i)))
OriginalL'auteur Ali Faisal
Ce code fonctionne pour tous les cas inclure d'autres caractères n'est pas seulement parenthèses
ex:
Veuillez entrée
{ibrahim[k]}
vrai
()[]{}[][]
vrai
saddsd]
faux
OriginalL'auteur ikarayel
Veuillez voir dans code description détaillée du code est inséré sous forme de commentaires. J'espère que ça va vous trouver utile
OriginalL'auteur Vinay Gade
OriginalL'auteur Nik
Simplifier et de rendre lisible.
À l'aide d'Une Carte et d'un minimum de conditions pour obtenir le résultat désiré.
OriginalL'auteur Himansu Meher
Comment à ce sujet, il utilise à la fois le concept de pile, plus les chèques de guichet:
OriginalL'auteur palslav
Ceci peut être utilisé. Passe tous les tests.
OriginalL'auteur Pritam Banerjee
S'il vous plaît essayer ce que j'ai vérifié. Il fonctionne correctement
OriginalL'auteur Vaithiyanadhan Vellaichamy
Voici le Code. J'ai testé tous les cas de test sur Hacker Rang.
static String isBalanced(String input) {
OriginalL'auteur Amit
L'aide d'un noeud de référence nous permet de vérifier facilement
OriginalL'auteur Birbal Singh
L'amélioration de la méthode de @Smartoop.
OriginalL'auteur Zheng Xiaodong
OriginalL'auteur shayaan
public void validateExpression(){
}
OriginalL'auteur Pavan T
même chose fait dans ce code comme code java .
OriginalL'auteur Faizan