Hej. Sitter nu och tränar på rekursion på codingbat.com/
Dessvärre verkar det inte finnas lösningar att titta på. Klarar dock av att lösa problemen, men vet inte om min metod är den mest eleganta.
Som ett exempel till denna uppgiften:
https://codingbat.com/prob/p184029
Ser min lösning ut enligt följande:
Jag sparar alltså en markör för att se om det kommer ett "h" efter ett "i" (läser baklänges).
Därtill ett par if-satser för att filtrera resultatet till rätt output. Tänker att man hade kanske kunnat skicka in ett 2:a värde som argument till funktionen, men vill helst inte modifiera funktionen. Tror inte det är tänkt att man ska det heller.
Hur hade ni gjort?
Sedan blev jag lite konfunderad varför det översta uttrycket inte fungerar:
if( str.substring(str.length() - 1) == "x" ){ // fungerar inte. Jag jämför ju en sträng med en sträng, väl? Och operatorn "==" ska är väl definerad för String?
if( str.substring(str.length() - 1).equals("x") ){ //fungerar
if( str.charAt(str.length() - 1 ) == 'x' ){ // fungerar
Dessvärre verkar det inte finnas lösningar att titta på. Klarar dock av att lösa problemen, men vet inte om min metod är den mest eleganta.
Som ett exempel till denna uppgiften:
https://codingbat.com/prob/p184029
Ser min lösning ut enligt följande:
Kod:
int iFound = 0; public int countHi(String str) { int hiCount = 0; if(str.length() == 0){ return 0; } if(str.substring(str.length()-1).equals("i")){ iFound = 1; } else if(str.substring(str.length()-1).equals("h") && iFound == 1){ hiCount = 1; iFound = 0; } else{ iFound = 0; } return hiCount + countHi(str.substring(0, str.length()-1) ); }
Jag sparar alltså en markör för att se om det kommer ett "h" efter ett "i" (läser baklänges).
Därtill ett par if-satser för att filtrera resultatet till rätt output. Tänker att man hade kanske kunnat skicka in ett 2:a värde som argument till funktionen, men vill helst inte modifiera funktionen. Tror inte det är tänkt att man ska det heller.
Hur hade ni gjort?
Sedan blev jag lite konfunderad varför det översta uttrycket inte fungerar:
if( str.substring(str.length() - 1) == "x" ){ // fungerar inte. Jag jämför ju en sträng med en sträng, väl? Och operatorn "==" ska är väl definerad för String?
if( str.substring(str.length() - 1).equals("x") ){ //fungerar
if( str.charAt(str.length() - 1 ) == 'x' ){ // fungerar