알고리즘
Permutation 구하기
e-pd
2020. 9. 8. 16:43
abc로 만들수 있는 문자의 조합을 구하여라
1 2 3 4 5 6 | @Test void solve() { String str = "abc"; assertThat(new StringPermutation().solve(str)) .containsExactlyInAnyOrder("abc", "acb", "bac", "bca", "cab", "cba"); } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public List<String> solve(String str) { if (str == null) { return null; } return recursive(str, new boolean[str.length()], "", new ArrayList<>()); } private List<String> recursive(String str, boolean[] visited, String cur, ArrayList<String> result) { if (cur.length() == str.length()) { result.add(cur); return result; } for (int i = 0; i < str.length(); i++) { if (visited[i]) { continue; } visited[i] = true; recursive(str, visited, cur + str.charAt(i), result); visited[i] = false; } return result; } | cs |