Рубрики

Java ArrayList для печати всех возможных слов из цифр телефона

С учетом клавиатуры мобильного телефона и клавиш, которые необходимо нажимать, задача состоит в том, чтобы напечатать все слова, которые можно сгенерировать, нажимая эти цифры.


{ 1 }     { 2 }     { 3 }
[ABC]     [DEF]     [GHI]

{ 4 }     { 5 }    { 6 }
[JKL]     [MNO]    [PQR]

{ 7 }     { 8 }    { 9 }
[STU]     [VWX]    [YZ]

Примеры:

Input: str = "12" 
Output: [ad, bd, cd, ae, be, ce, af, bf, cf]

Input: str = "4"
Output: [j, k, l]

Мы обсудили один подход в печати всех возможных слов из цифр телефона

В этом посте мы обсудили другой подход. Мы пишем рекурсивную функцию, которая генерирует все слова, которые могут быть сгенерированы с заданными ключами. Условие завершения — когда переданная строка пуста, в этом случае функция вернет пустой ArrayList .

Ниже приведена реализация вышеуказанного подхода:

// Java реализация подхода

import java.util.ArrayList;

  

public class GFG {

  

    // Строковый массив для хранения символов клавиатуры

    static final String codes[]

        = { " ", "abc", "def",

            "ghi", "jkl", "mno",

            "pqr", "stu", "vwx",

            "yz" };

  

    // Функция, которая возвращает Arraylist

    // который содержит все сгенерированные слова

    public static ArrayList<String> printKeyWords(String str)

    {

  

        // Если str пуст

        if (str.length() == 0) {

            ArrayList<String> baseRes = new ArrayList<>();

            baseRes.add("");

  

            // Возвращаем Arraylist, содержащий

            // пустая строка

            return baseRes;

        }

  

        // Первый символ str

        char ch = str.charAt(0);

  

        // Остальные символы str

        String restStr = str.substring(1);

  

        ArrayList<String> prevRes = printKeyWords(restStr);

        ArrayList<String> Res = new ArrayList<>();

  

        String code = codes[ch - '0'];

  

        for (String val : prevRes) {

  

            for (int i = 0; i < code.length(); i++) {

                Res.add(code.charAt(i) + val);

            }

        }

        return Res;

    }

  

    // Код драйвера

    public static void main(String[] args)

    {

        String str = "23";

  

        // Распечатать все возможные слова

        System.out.println(printKeyWords(str));

    }

}

Выход:

[dg, eg, fg, dh, eh, fh, di, ei, fi]

Рекомендуемые посты:

Java ArrayList для печати всех возможных слов из цифр телефона

0.00 (0%) 0 votes