You are viewing a single comment's thread. Return to all comments →
I tried to implement same algorithm. But only got test0 and test3 successful. I have written following code. Where might I be wrong?
public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); String[] str = new String[n]; for (int i =0; i<n;i++){ str[i]=br.readLine(); } //int n=6; //String[] str = {"ab","bb","hefg","dhck","dkhc","zzzayybbaa"}; List<String> pLst=new ArrayList<String>(); for(String s:str){ char[] chars = s.toCharArray(); List<Character> lst =toChList(chars); pLst.add(listToString(nextBigPerm(lst))); } for(int i=0;i<str.length;i++){ System.out.println((pLst.get(i).equals(str[i]) || str[i].length()<2)?"no answer":pLst.get(i)); } } private static List<Character> toChList(char[] chars){ List<Character> ch = new ArrayList<Character>(); for (char c: chars) ch.add(c); return ch; } private static List<Character> nextBigPerm(List<Character> lst){ int pivot = 0; int swap = lst.size() - 1; if (swap ==0) return lst; for(int i=1;i<lst.size();i++){ if (lst.get(i-1)<lst.get(i)) pivot=i-1; if (lst.get(pivot)<lst.get(i)) swap = i; } Collections.swap(lst,pivot,swap); Collections.sort(lst.subList(pivot+1,lst.size())); return lst; } private static String listToString(List<Character> lst){ StringBuilder s = new StringBuilder(); for(Character c:lst) s.append(c); return s.toString(); }
Seems like cookies are disabled on this browser, please enable them to open this website
Bigger is Greater
You are viewing a single comment's thread. Return to all comments →
I tried to implement same algorithm. But only got test0 and test3 successful. I have written following code. Where might I be wrong?