javaarray-algorithms

Where do I go out of bounds in this Reverse Words In a String problem?


I'm going out of bounds somewhere while iterating a very long string but I can't seem to find out where?

import java.util.*;

public class Solution {
    //Helper function to reverse words in string
    public static String reverseWord(int start, int end, String str) {
        String word = "";
        for (int i = start; i < end; i++) {
            char ch = str.charAt(i);
            word = ch + word;
        }
        word += " ";
        return word;
    }

    public static String reverseWords(String sentence) {
        //Reverse entire string
        String reversed = "";
        for (int i = 0; i < sentence.length(); i++) {
            char ch = sentence.charAt(i);
            reversed = ch + reversed;
        }

        //Set up pointers
        int start = 0;
        int end = 0;

        //Set up output string
        String output = "";

        //Iterate through reversed string
        while (end < reversed.length()) {
            //If end pointer reaches a space
            if (reversed.charAt(end) == ' ') {
                //Reverse the entired word from start to end
                output += reverseWord(start, end, reversed);
                //Iterate through extra spaces
                while (reversed.charAt(end) == ' ') {
                    end++;
                }
                //Re-setup start and end pointers at beginning of next word
                start = end;
            } else {
                //Iterate through reversed string normally
                end++;
            }
        }
        //Reverse final word in reversed string
        output += reverseWord(start, end, reversed);

        return output.trim();

    }
}

So my solution to the problem is above. I'm doing grokking the coding interview on educative.io.

I have to reverse the word order of the string is essentially the problem.

submission failure

enter image description here

I pass all the test cases but when I submit I hit a snag here:

enter image description here

I put print statements everywhere and I never go past 9650 iterations, at least not to my knowledge?

For what its worth I put the code into an Intellij project and ran it with the same exact input but it worked perfectly. So I'm not sure if it's my code or if its educative.io website?

I want to ask here in case I am missing something because I would like to learn as much as possible and understand why its going out of bounds.

Here is the input that I'm failing on:

" uwllkmwrgtouodjnenuawaqqkpbthajsfzzyy ssqdwnmyhjkwupqcbbmmhwctmzfqfmyrcqnpwornacmbwpkizwngat xyrvvsckkxulselcjw puefau mrmzfeibgwytnwqcwhyidubrgwoqvtojlgfwci ethnzypoztnm vabvanvdjoeydbhmawovrzqtmwqbzosxscdveuifnkqyngovrkrsqprdheuzyjowptkbbgagvnecwesejpvdkuy qxuebyajjo tzt gymsrjyvxkfxvopoxzeyycelcpwuqbayjhaqqqdfkgqwhugyzwurkbtrgh nyxuha aganwmq nspjkuiudxtjjpkjstqrowl pzeqguifeanoglb qvbyvwvwo gehzuhkhbvnhq axamiogdgjbwpslchqrdiwsvzegrfdbxalvvhckfblhtybalsbgnaktjxghzzzgeyxuvdejbwvadxzgjdngrvfzdzvgkfjnsvqjikqmpvlswipbgfkzwsldpbxopzyezfqmbtlvhexogjzhlcanlaxmlvnatdvrystrdfghmijlbruepyvyqqakocnyhsbkzrhney rhcokbcoudamwvdhgucslknrhgkqrwckzqssadjewf ddyqnhcrbwyrstadolbpqqzytoleetkzyzvtmiphdwjfcdlpgcdetxeorw pdysfmnyp bwhau nelgvnadlffngwfqnbltoryrzjkdnlkpqnfmjdjrojdwkdhzmraudpdeamphjvpqzvorbwygsqubnjrbk ynuvaugo jivmwetncfgou rcd uylivffbuolczkhkgljkopmueugubxyrdgo u uopofdnjpyudazohkqak pbpxisbywylhjo uzczfekgqf zdpavfljwjutoznygzysiatgjatgvuusahdsyebczlyqelkmru llwxfkuzcdtrvxffgyur dkdqxsfclocaafkxmgchlsuwwxbnzuwpkmyppg zfcdwotywqggnblzow bgp gmjhhfnpyyyrkxuocwdmtyajwnqeoszkuvnogzxoehefzpbcakcsnkgetdylibiluunsjmfyohvwvb cocitloifbzpkqyri ckqbqvgnjlpcvbtntopntyi poxlvoeavebhpkjttznvkksimawgyszovicc ro zyppgfoamnckflzooxlhxiaj rdmo jgdgerqgp  zmh lqarekgitjmxfq tqjmxgakciepfymvuyfkzqdkhyiwnkenvbocdcympslbwlsa uzmrdovnxmrcwktwtzfbumjlyflavmofsqlfrhilbgcrcolufzxuegkbgwuafieqhivclleeuxstgobpyshjhckkjmzrjyfgqstwuoyacosbtwdmvzbsfltskunqweebxetloiyibbg brbayrfemhbhoekuzqsgypebnrxakqjujw hs adblnpksgsyaobkw pgzsiaxhz xgolxjqjycoxmf mdrmnfbbfulyxyhnr notjyyfebzcshvu waysngzldbkappimiglopokalhqihcvhmwxdhyqpdqytoeofhdplw mzsbvtawdxm rteahngebe sekurtuhboyvzqnpqkzxbicmrjmmiuzvfacsdizxloicufstaywfinf lfslgkugknnci ljjpdfuvsckbfntqelbktgcmyifjemfeyygemy jrngar gbaqcvmjqkxlipilfyekurbrpuebdp aiuvrcwvyl bnblpokugedcpbqhabtrlwjbthjamsdrtlngidvanust tlxmndvk gipf qshdgkuipaett liqxgeliapknlmttvpuwhlsyccpuxtbiizryzc tsraqvtbnkcihbjazdaucrxpejdtamyevfmcwsrhkuk blacewyybvckvjxxvowksdrdzkwjvjsgfctsdjplxlfequvoc cqvfmxetrldehwairxwnmiyvyhvvqkszkmppnawbmkiyypbzibpkeelddziuadvdulekgcplquinvvxkycqibkrwhnkfoasqaiaxkvfqmhxjkjoiosvcegsfstkhvxbulclmbolxydejliemapwfhymqair ymccm u abwydegicmqctrkrwnbrolmugkzoqfzsosvzkftqsnvfvyttgnwwms njgukcssfmaxcizxobeomtkfuqajjokjadhmojoskrs omsolsaxjn utogqhethdyofnjutawyyduczmeopjdrx rfrmcfqaatnywwkjh s pl p tynnfyidabjglpybkiqnvaxadhxexhzzngvcfmrovkjeehkrpkjbzw jinvjfayigcmqiugpcbquwfffxdxngeitfacuuioatlokjqvnwajrnbognnzqcplxbfzs fapugifv urdupjwxjfvbiphhxbtbbsonmwxzutsmzglbqpqezcoangawr makdxslhyrqzzupbxahrxjqwyrjckpblzjcsxyolvialimhrsbwpnyiarggrudryvmprafiraa vqkohovcxrpsjfrpxknfr s w jvvq smolpontxvpyvibzhhwnpuirysdsbueelpbbevtjibjejeqvcjeolyvfuhpmqjefqcf qcmr pajpzuxhpejrodvwvpjnnfed wbyyhybpvlcsrecdcfzzslrpkoily simllwjmwcxnoaszezcyjpwnazricz jcsbofdfsjzvwwpxelimrbnwassgjtfxkf mjymnfhybfijgxinoleaznlzwejfgc gbwimrpgzwomtsrxpmtnjypuxlewonfmu hcseqbxyflxnykrykbabbazvrlggfmqwtqqzzaveafyltpfcmmplbdaftjdgkylkrpdxsenmokqzjiawuscqxrdprtqgztrytgkdj fzuggdaarroksbzqrqu ydukgyje yhegesohyfdhkzstswickretwtmhnzvlwatoxhwe hbivuereyltltigggcohbwmwmvoutps  wlfjgfhfwgb mgupiffszcyzdk ilwpeffdjhbfzqcmlljgicoutdumrqqvqvffz advhsxvdxnypvv mhfrmiex vzkqlfqyvacvihocloaoxbqknbzeztuzb ggvg rcwnrnobk xgzwxinukokbwdqvpyejshcooqgcjvmjbunvqgjtf sgnqgxdonjgxwpm xnrcs ukmbfxynqatqqomqnglbqxcvgmkmnoyppwqqmtzadyfrozuynymvlqysslynuwpogzicyj  crvnlqcq zcepvtsgoyiemega yhatcobgrauoyxgwrgdbrbqqzaafsewgdwmeodkossbyqs octnkkrntsbg njri wloiuvbptybbmmbsidqfujncykdhfmorcqd qmdhwejmnanzxsuviwsqvlhiseuvog wyeaoqestznc dychlmmhfmapk vcxnlbbevyje guiwwowyeceor dcwts pltebkivjphqvo ujdgocda zsvdzybirtojwbzmiupzdctqiucltitsqbguxhlceimpawyeanntyhapyhfwpkprwuhphiqaoqgajscwxgfsho xaowymhymy  nuqbibpourizjhzhz ns lfasrjvaoagjscexaxdemvdrrlpp zpxlfgyqljgaqnglxdbxfqqqqbxxdfzymcdbk bdxgrybqheqkrxwvrsbloqxrizdzcjlovttoflgmnrshc fioteqoklgfd lvjlftdawkzcmeyhlyevhgvw xzcfuyluyiumnbvowpgpvfcnjppnevsenlsafaevettcvgxshdkeygvi rgmkkfkqqmywvyopihteoxbypvkaekdoljzmdhwsbedqtmlpoga ernrkggpixneijrlopgtussxhksxliaqktffysjctbnyyacaxbaccojemzdjzml zkfj rbpftkvgtdaecjljfhkkaputpmyepxvuazylcr svyyzthyyythpwmlmnvvhiijfkpwcmeeskuirkon bcd uctg oxthmtqqeqauusgvpgejbfqmhv bar vceljkwuqtiqfkwnahjtmycqxghmlonixjrkahentwumb up pxa nlfofqqrrlkdszzfemxfgooxemfnosjzbznefxqdrzefimfrxxgdhtvsmorpdmnxadz jyzfmzhjygismmhqdaafexfsntkqvskhbezmzwbpytzrqzmsrygykwjilsjzreamvfulxn mtllk aluunsheakwwykqbgxi nfnvsctfpooaauqrdsmsn ppbitvmpnfkgsjbaccjwlyhpjrpfgpqegw mjrjg ywtdnjjcq  mwpmcqrwbzyydjwwfpjvvnourxq itsxokhghbtcgxmxxhhvmtkymibcft vikvvenuorfpqsaifbfnxdfpvdhrkzdjtudnncqbm ccazxrppuydkvdtjauvwhtfcfvapndgfdeodqhhkxdzqkfmsqsp gpldzaoshnymdjrtxlcxoxcsdcvhkkvsuypsobkjcb xnntzgfomjmfmck chgndd kkzsxd o qetwimcntcmupuwrzeamdpaagnjl rwkurwyecnhcqvhncqp zc jo fbwyunofwjdunyppvlfledcpfuefzjwkqtyyvjovaxi  gyzxsyfpmzxtdfpsurcrscaghdvpaxxdcpzm tkailjybpreaoleovvddazksjgcqjhdwtprrqzpnczkthevrbubuesahhhcpeqwuav fxgibhuhfdqmvebkcrsoimnigfrnirtwuvdxoublkikvtldzumgeqbuzytzjjnlgzzaeq fkzouyiqlwcsuzixovoplddeidhlquytldmtyeppcjyoqdwhklvtxvlydwkfzlqlisyridicjwovpjuzqtajpzbydo gknmde jrliufmiw yrdtyddrh lvxpxygxs kzqvyqtzzlnjjpsjkpi soixilhrxauqvncxdvarlsydbygolhfirsdvhzzxqpgpeqhosc jhzscvhvvtlodlzojy nkcquuulmm zuvovqsfljrrsygwcsdncmtklqvbvwzjixoioedzxwpa lbpra kthdwdugzomjoceotydtixvhscrtfjxtto  kzokusvvodecfxveswcvlmoyrq hejodxeussyfdamdbrdeayduowqpovubmndxfdrpsxer xpuwyih vnhzpdojsctujyvqaciuslgysyajgiwgeixv cxlsjuzacgqysnxptvombkhsynucpyvrzxbdmzxkvujfceugbzsvknvknvnopjammqw hqknfbfborgeirtzkgrwtetqkjwjfjefjzcmwjdxqxvkxasiqlyowzbqvhqltomcdfsarbkbv fuzqmquejamaiihtyzuhwbxp pqxp  spkxckqpdakwzcgobed quwpnujfsbqrvmxxyvobkgvewitbkqinezrtozhxcxqukrvz ecmwloyhfajcutivkvbmpiexlwrtdgnjsysdyebsnwmggekzxtluqsrnpovvbothnavkklivydbvkdzuq achnbvdnujbwrbtwao qsgclakhneaqkowxoqmzggqhbulgfrxrsuzvyjtfwczkizedofrnnymoazgjldnqbzabsglmmqpxdkctycvxkouyi rqk ouzbmwclrmxs egcibplddhyzrhqnmtcurssxtpeek wzsovnqroinleiozjsigziymhqjcyrrzyblmswktngiwpwroukzd ilnisfkwlnkjwgctqmmhrxpxakfecmxpludfcexdqkzvjqibgdxkcvdtwwbvzwjcdlbhse zm hhxafbzkznyupeuxkfvknyld suhlvhcxegcudczzoetykmteghjngocvmdakxtpul ufojfbaztyrfdsipggrtklykbymq xmroxyjtqkeaxejlfutbcitiqqtefvetdlpdvjumygrzgvpvbklrejybiqeyrjfkczlxjiteimxcmgnwdifoeduqazhw wjpxtdxjklxiqrwlsymvjeatlqb xrtyyvkxfoosegxkgaommmrxikvttboqswsnmmktscavhjyfrpvgyvnmostyfzmefrvglfbdqubgfdmgmrjuughmizh zqonvhuz gqhcu gcqu mitk z jjnzafbmsutev dkfprkimmcagbyivy tkwgyifjjowxcprljxqtvqkohwaspuwbjgkttbpwxsinnatrnsjbofxh hcqcvonhhrhbvpptxadpmqxsh uhndsqbbvdoykctfnfnspcgroq agnrpwqympzseiqdgrwslkkuxvnseggjrw zvlpyeephyntthh vls xhghapd fxdllcwwsmalmfuidufxprrqjdltelldsmdlwjcoagkgaatfc plmcnxoprlizh aecsxzyibvdqmnhefwbbsbiifmkmcmuxhzxekz cmihvbbwuxgiobbjvtiuvrmtnfb cqurijcydzo ugwxdgagksgswqfbvxvpsdu ambbqfeigweywzc rpgbuctjvonxikg avucxpdpwrqjcmvtpmafnsqwxyirxqnqokkrkojc kfvokhuzflod trvzaxlgjnqzdgsbleiyfbqnolckqdjlpgdcsppdcmuigpl px ikioxskxgqbumsagl whxflxboqwdscwyslnhk rojqermojiqqxqeoldcxykfidevhx ssocunzcrkyaxwzfnxlmsptczupdwkac wintvlgtbbeybxtcjtdrmwx cpmtagspkysarhgxpixp evwc e xuzzcvqbayhjzspdd zdtsqqlbt cghwfctq eemnrgrowgdwowiapeymfaflbmk zuffyr vxhizzogqcsktoomeldriiqofmhspgealgtixaytftagwncvyvajorutrsbrahilgkiysuoeyjybgsyxdfzqgrqpqgml afkwzklvxfufkh hylsdvydderilfaqjhlurmpwyxv xuikiqrmbcybszpabouutggsbdtrsbqofdetmkcnh yildmozmkxggpcrcxdiboiktabtusnggnagpkfvhkdwqngatsjviyabriwjlborrddxvlgpaeluygqsdarypbrxefhxdcgtbjihqovx dldgyzcyqaacrwzwholamzozpjuoosliwemkxplaqqp fmfbwweebzahupccufuzgtjvgislhloiqfgknqreljrcfjjbf wkquyyvelnhrbhwmjgfwpakolljj krsxvszfcinaylkkzudosfgxztsirldmrwtkjllcbuhjsudmvvlvxjolllqwyvjjjzpiqeaxuqiybgntxljhialv j cqdfrdfoyobtfmdgtyzyjw t dvadktuycofmgvnyxlshicsuxczfgncbydvqbgbwjlrzixyvljsgkcefvifotepfigdgfhvqgzmybfddonuxiisugvkqnbxkctffxoernefkvkzocsjaporrytwjvhuaykeosuldxppsxxhhnoyhvudzyeinpw bnmsenjicibaz izdqzk vbuleksyrzehpcvplthkp lmwfxftpuqqeqskcarifxxcu ufkdbcneqmrlrqgcxexqvuqglvldxireggwtgzczhlndbgn pmiqxmqgqzcezvounfkqqtcnpcpgljhfztzvouoptoz vxrurjhznahswnjw erwiokkmtbmpcwxeryngvsz ufoyjdcfyqhfzamsrgxxhpkeiutuwhdlboayuywyajxjpucwg tviizufwxlziptrxnorsmgtfktzhzoadkjfgsivmybqe tfynir avb lchfsayfwruuzmrjrdgwoznceilovf rudqe yvy semz nmiyuzozmxu wctoqnlf  ycrxcmoqgmiqgfpbmyzckyxqoexuid gknd tdhdasypshg knjvbkuulwdretyizmpccrncxnudlumviwihetqisjczmqdwakmsnsfkjjuhkelobypxjfqqlafxi qibocuyduycdczxsxms ojxmkoqyhivdupsiqlgckuzlmzwoydcrevajnsdwotnxjpwsmwtcgzbgmjsfnfyktrfhqkdhbkydgtclv absnftuavnvkwyarprajxgetbexazwkqod axgktaaszxyvmuviojqlqqgdhefgmhqvbxlpnav ooevl vrqcokgbpssdfcu rpnmusmvbg lbmmklvanrhiwnm yjkhbhorbpyyptivhqzazlpxmubwcebqpcxggdiykdsleg lb clsiyqujjlsbmigqynpyjsmczblpjqbmawljwsutqlnxe xoxxwggqrtmihbys knzderhnjlcftbjffgmfotgjqsfnmksrdddfjsfdwjfhhaztxymilfbswfqwbeqzmciteeyctnrxyswoqnomuivc hrlfqthweggfteac evklzbsmz y jgbuhgxmucbrhiskhisozgliczmyszfwxcxoenr zthwbcwrfmflrdprkpyfzeljkkbjqbvhamsuuhlfgldodmoyckkznfgabxjovknmymrvbayhtge iempddzrpxypjssiwzgntihut yufkxw luxzt tfmexaafqsdreinkiqkjdbvq hnzzrntoscygjprunantuv rxcakmeqmrvkefboit srzcxveqvimikqwkgqraetcepzpkmrnibtoogwtpswzmfwqgngvblozpxpcvqmfnnmbfiixecjxr jcqkbsrrti unhtqtuhclqvhckfjyc olwnhgcnrobobeasbsirhfctarekakz iekmcuw nchqvnmnqlkoyytxqkqtgcyvky mudspiovyrlbsrfgxrspmgcbiktmdfrlopvzmr fnvveksodnqchfleyutypcqdrfsytlsf bgbafechamfaukigyvtpwfk jsqfdvwsbspi noyswprghmbeptlojzlmytvnbarqcrjs xmcmbtourjcougwo arixsojvftwvmjlhphjw iovhzzj strdcnmzxtnroziipetqgegbjabw gcadlhkuvwcqrywea vpyuaiwx zm cru ebfqkmmttfgjfasuongnxkfxuhwslfhozdk uwprlurcscopqqbsscjyyvcfnfcircdrkhk p dlnovyfikuhcprpszhgkgrkawtytszycnfbwfwdopumaha dyddzkptshied jpwbzbkqwtblykxmp qchfixdrpuwmswyaupahjpyakknlspuz aqxidhrbvxsgrfkwubyudvsdwckzkiqlutxadskzbmtotptbwtkzywpoxabujhhoklgyqmbjcnvbeou"

Solution

  • @TimRoberts pointed out that I don't handle the case where the string starts with a space. So I tried doing .trim() but it took me a second to realize that .trim() doesn't modify the original string. It was a Java skill issue!