31. december 2006 - 13:49Der er
7 kommentarer og 1 løsning
metode til at tjekke om parranteser er sat rigtigt i en string
Skal lave en metode de rtjekker om der er sat parranteser rigtigt i en tekst string har brug for lidt hjælp. her tjekket for om der er lige mange start og slut parranteser. men nu er jeg gået i stå.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Så når der ses en højreparantes skal der altid være sat mindst lige så mange venstreparanteser som der er sat højreparanteser til og med dette tegn?
Det kunne se således ud: public boolean countParantheses(String s) { int numberRight = 0; int numberLeft = 0; for (int i = 0; i < s.length(); i++ ) { char c = s.charAt(i); if (c == '(') numberLeft++; else if (c == ')') numberRight++; if (numberRight > numberLeft) return false; } return true; }
antal=0 Løb strengen igennem fra venstre mod højre Mødes en ( så antal++; Mødes en ) så antal--; Undervejs må antal aldrig blive negativ. Tilsidst skal antal være 0
Den løber en streng igennem og returnerer false hvis der opdages en højreparentes på et tidspunkt hvor der ikke tidligere er sat en venstreparantes (altså fx hvis højreparantes nummmer 6 sættes når der kun er set 5 venstreparanteser...)
public class Test{ public static boolean countParantheses(String s) { int numberRight = 0; int numberLeft = 0; for (int i = 0; i < s.length(); i++ ) { char c = s.charAt(i); if (c == '(') numberLeft++; else if (c == ')') numberRight++; if (numberRight > numberLeft) return false; } return true; }
public static void main(String args[]) { String s = "(hej hej)"; System.out.println(countParantheses(s)); s = ")hej hej("; System.out.println(countParantheses(s)); } }
Hvis du ydermere vil have at der skal være lige mange venstre- og højreparanteser (det vil du jo nok, når jeg tænker mig om) kan du teste for dette til sidst:
public boolean countParantheses(String s) { int numberRight = 0; int numberLeft = 0; for (int i = 0; i < s.length(); i++ ) { char c = s.charAt(i); if (c == '(') numberLeft++; else if (c == ')') numberRight++; if (numberRight > numberLeft) return false; } return numberRight == numberLeft; }
super manglede faktisk kun linien med if (numberRight > numberLeft)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.