public static void main(String[] args) { String s1 = "nei", s2 = "neighneigh", s3 = "neingeighh", s4 = "nneigneighheigh"; String s5 = "inghgeihhnnehegiggniienehgiinininnggeiiggheiinennihinihnigiiiheiehnigniehhnhhihheegenigiiienghihgnheneneiineeiihgegnnehgennheihhhgieehghigininniggineenignihnenhenehheggeghhgeeghegnihnghiiennegnhiengnegeneihegnenhinihhineiehhnhnihihinhnhgginhnninigieggginhhhiinheiiihegiegeenngggnhieneeenigiinnhiggneneegiiheihggghnhiinhiheiniegiiehnhggehengehigegnggnegenghhggehgeneehnhhngnheiggiggneieegnhegnhegnniieenhheighennheeghneeegehhhiihhegiehggiehgihhngneneheeiieeengieenninnhihheeeeeehehghenihggheeihgiigigiiggneheinhegghninheeihhiheeiehininngigiiiegiignghgehineehhnnginggiginehhhheenehhhegegehhniheeehegignnghhieeiiihhnhieginneneigihhnihiieiiigheinnginhnihnnehiieeeghieegngnnnhiieiheghnnineegnheegnhehighngeenhingegneghhinhienheenhihiehnnnghnghegeiingeiigeghieeigeheniegiignhhnighginiehghngninngeinnngingheingghginegeegghnneennnenieginhnihhieihgnghigiggnnhniheiigienhiiggienehgegihgignhhneehegh"; System.out.println(solve(s1)); System.out.println(solve(s2)); System.out.println(solve(s3)); System.out.println(solve(s4)); System.out.println(solve(s5)); } private static String str = "neigh"; private static int solve(String s) { int res = 0, cnt = 0, sCur = 4; if(s.charAt(0) != 'n' || s.charAt(s.length() - 1) != 'h') return -1; Stack stack = new Stack<>(); for(int i=0;i cache = new ArrayList<>(); while(stack.peek() != 'n') { char c = stack.pop(); if(c != str.charAt(sCur)) { cache.add(c); }else { sCur--; } } stack.pop(); sCur = 4; if(!stack.isEmpty() || cnt > 0) cnt++; else { cnt=1; } stack.addAll(cache); }else { stack.push(cur); } res = Math.max(res, cnt); cnt = stack.isEmpty() ? 0 : cnt; } return res == 0 ? -1 : res; }