Untitled
unknown
java
3 years ago
1.9 kB
1
Indexable
Never
import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { private static final byte[][] KEYBOARD_MAPPING = { {'a', 'b', 'c'}, {'d', 'e', 'f'}, {'g', 'h', 'i'}, {'j', 'k', 'l'}, {'m', 'n', 'o'}, {'p', 'q', 'r', 's'}, {'t', 'u', 'v'}, {'w', 'x', 'y', 'z'} }; public static List<String> solution(String text) { if (text.length() == 0) return Collections.emptyList(); final int length = text.length(); int[] digits = new int[text.length()]; int count = 1; for (int i = 0; i < text.length(); i++) { final int digit = text.charAt(i) - '2'; digits[i] = digit; count *= KEYBOARD_MAPPING[digit].length; } List<byte[]> words = new ArrayList<>(count); for (int i = 0; i < count; i++) words.add(new byte[length]); int skip = count; for (int i = 0; i < length; i++) { final int digit = digits[i]; final byte[] letters = KEYBOARD_MAPPING[digit]; final int width = letters.length; skip /= width; for (int j = 0, k = 0; j < count; j += skip, k = (k + 1) % width) { final byte letter = letters[k]; for (int l = j; l < j + skip; l++) { byte[] word = words.get(l); word[i] = letter; } } } List<String> _words = new ArrayList<>(count); for (byte[] word : words) _words.add(new String(word, StandardCharsets.US_ASCII)); return _words; } public static void main(String[] args) { System.out.println(solution("2").size()); } }