Lexicographically greater string


For given words let’s try to create first lexicographically greater string than given. Try to change only order of letters. Length of string is the same.

import java.util.Arrays;

public class Lexi {

    private static String sortAlfabetically(String base) {
        char[] chars = base.toCharArray();
        Arrays.sort(chars);
        return String.valueOf(chars);
    }

    public String greaterThanBase(String base) {
        for (int iter_movingChar = base.length() - 1; iter_movingChar >= 0; iter_movingChar--) {
            char movingChar = base.charAt(iter_movingChar);

            for (int iter_charToReplacement = iter_movingChar - 1; iter_charToReplacement >= 0; iter_charToReplacement--) {
                char replacementLowerChar = base.charAt(iter_charToReplacement);

                if ((int) movingChar > (int) replacementLowerChar) {
                    String result = "";

                    //return head
                    result += base.substring(0, iter_charToReplacement);

                    //return moved char
                    result += movingChar;

                    //clear tail from moved char
                    String tail = base.substring(iter_charToReplacement);
                    tail = tail.replaceFirst("" + movingChar, "");

                    //add sorted alfabetically tail
                    result += sortAlfabetically(tail);

                    System.out.println(base + "->" + result);
                    return result;
                }
            }
        }

        System.out.println(base + "->" + base + " (Same string)");
        return base;
    }

    public static void main(String[] args) {
        Lexi lexi = new Lexi();
        lexi.greaterThanBase("ab");//ba
        lexi.greaterThanBase("abcd");//acbd
        lexi.greaterThanBase("dkhc");//hcdk
        lexi.greaterThanBase("hefg");//hegf
        lexi.greaterThanBase("aaa");//aaa
        lexi.greaterThanBase("dcba");//dcba
    }
}
Tagi: ,
Paweł Dobrzański

Start-up's fan, technological conferences member, social media enthusiast and low-cost trips traveler.

You may also like

LEAVE A COMMENT

Cześć!

Witaj na moim blogu! Znajdziesz tu proces budowania mojej aplikacji EventSearch za pomocą jhipstera. Podzielę się z Tobą niuansami dot. zakładania i prowadzenia firmy. Mam również nadzieję, że pomogę Ci zaoszczędzić trochę pieniędzy. Zapraszam!

Najpopularniejsze posty

Dzięki, że wpadłeś!

Paweł Dobrzański

Paweł Dobrzański

Start-up's fan, technological conferences member, social media enthusiast and low-cost trips traveler.