Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc8ca38e

Browse files
update 17
1 parent278e1c5 commitc8ca38e

File tree

2 files changed

+36
-6
lines changed

2 files changed

+36
-6
lines changed

‎src/main/java/com/fishercoder/solutions/_17.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,33 @@ List<String> combine(String letters, List<String> result) {
3434
returnnewResult;
3535
}
3636
}
37+
38+
publicstaticclassSolution2 {
39+
/**
40+
* My completely solution on 10/11/2021, no backtracking involved.
41+
*/
42+
publicList<String>letterCombinations(Stringdigits) {
43+
List<String>ans =newArrayList<>();
44+
if (digits.length() ==0 ||digits.equals("")) {
45+
returnans;
46+
}
47+
String[]options =newString[]{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
48+
ans.add("");
49+
returnrecursion(ans,options,digits,0);
50+
}
51+
52+
privateList<String>recursion(List<String>ans,String[]options,Stringdigits,intindex) {
53+
if (index >=digits.length()) {
54+
returnans;
55+
}
56+
List<String>newAns =newArrayList<>();
57+
Stringcandidates =options[Integer.parseInt(digits.charAt(index) +"")];
58+
for (Stringstr :ans) {
59+
for (inti =0;i <candidates.length();i++) {
60+
newAns.add(str +candidates.charAt(i));
61+
}
62+
}
63+
returnrecursion(newAns,options,digits,index +1);
64+
}
65+
}
3766
}

‎src/test/java/com/fishercoder/_17Test.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,35 @@
88
importjava.util.Arrays;
99
importjava.util.List;
1010

11+
importstaticorg.assertj.core.api.Assertions.assertThat;
1112
importstaticorg.junit.Assert.assertEquals;
1213
importstaticorg.junit.Assert.assertTrue;
1314

1415
publicclass_17Test {
1516
privatestatic_17.Solution1solution1;
17+
privatestatic_17.Solution2solution2;
1618
privatestaticStringdigits;
1719
privatestaticList<String>expected;
18-
privatestaticList<String>actual;
1920

2021
@BeforeClass
2122
publicstaticvoidsetup() {
2223
solution1 =new_17.Solution1();
24+
solution2 =new_17.Solution2();
2325
}
2426

2527
@Test
2628
publicvoidtest1() {
2729
digits ="2";
28-
actual =solution1.letterCombinations(digits);
2930
expected =newArrayList<>(Arrays.asList("a","b","c"));
30-
assertEquals(expected,actual);
31+
assertThat(expected).hasSameElementsAs(solution1.letterCombinations(digits));
32+
assertThat(expected).hasSameElementsAs(solution2.letterCombinations(digits));
3133
}
3234

3335
@Test
3436
publicvoidtest2() {
3537
digits ="23";
36-
actual =solution1.letterCombinations(digits);
3738
expected =newArrayList<>(Arrays.asList("ad","ae","af","bd","be","bf","cd","ce","cf"));
38-
/**order doesn't matter, so we check like below*/
39-
assertTrue(expected.containsAll(actual) &&actual.containsAll(expected));
39+
assertThat(expected).hasSameElementsAs(solution1.letterCombinations(digits));
40+
assertThat(expected).hasSameElementsAs(solution2.letterCombinations(digits));
4041
}
4142
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp