JavaRush /Java блог /Архив info.javarush /перебор всех регистров букв
turboblufer
15 уровень

перебор всех регистров букв

Статья из группы Архив info.javarush
public class Task02HelloAllCombinationsOfCases { public static void main (String[] args) { String hw = "Helo"; char[] hwArr = hw.toLowerCase().toCharArray(); char buf[] = hwArr; for (int j = 0; j < hwArr.length; j++) { for (int i = j; i < hwArr.length; i++) { buf[i] = Character.toUpperCase(buf[i]); System.out.println(buf); buf[i] = Character.toLowerCase(buf[i]); } buf[j] = Character.toUpperCase(buf[j]); } } } здравствуйте, задача такова - есть любое слово.
Программа перебирает все варианты регистров этого слова. например:
hello Hello
hEllo HeLlO .... HELLO у меня алгоритм примерно на половину готов, однако почему-то нет идей как делать дальше, тк голова вся замылена уже.
Буду рад, если поможете с кодом.
Комментарии (9)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Vash_the_Stampede Уровень 11
10 сентября 2014
public class Solution {

    public static void main(String args[]) {
        sortOut("hello");
    }

    public static void sortOut(String s) {
        // всего должно быть (1 << s.length()) вариантов
        s = s == null ? "example" : s;
        int n = s.length();
        char[][] set = new char[2][];
        set[0] = s.toLowerCase().toCharArray();
        set[1] = s.toUpperCase().toCharArray();

        for (int i = 0; i < 1 << n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print(set[(i >> j) % 2][j]);
            }
            System.out.println();
        }
    }

}