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

Commitf38e2c2

Browse files
add a solution for 340
1 parent4dd42b4 commitf38e2c2

File tree

2 files changed

+42
-3
lines changed

2 files changed

+42
-3
lines changed

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

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ public int lengthOfLongestSubstringKDistinct(String s, int k) {
2121
if (num >k) {
2222
while (--count[s.charAt(left++)] >0) {
2323
}
24-
;
2524
num--;
2625
}
2726
result =Math.max(result,right -left +1);
@@ -57,4 +56,35 @@ public int lengthOfLongestSubstringKDistinct(String s, int k) {
5756
}
5857
}
5958

59+
publicstaticclassSolution3 {
60+
/**
61+
* My original solution on 10/20/2021, a very generic sliding window template.
62+
*/
63+
publicintlengthOfLongestSubstringKDistinct(Strings,intk) {
64+
intleft =0;
65+
intright =0;
66+
intans =0;
67+
int[]count =newint[256];
68+
intdistinctCount =0;
69+
while (right <s.length()) {
70+
if (count[s.charAt(right)] ==0) {
71+
distinctCount++;
72+
}
73+
count[s.charAt(right)]++;
74+
right++;
75+
if (distinctCount <=k) {
76+
ans =Math.max(ans,right -left);
77+
}
78+
while (distinctCount >k) {
79+
count[s.charAt(left)]--;
80+
if (count[s.charAt(left)] ==0) {
81+
distinctCount--;
82+
}
83+
left++;
84+
}
85+
}
86+
returnans;
87+
}
88+
}
89+
6090
}

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

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,26 @@
99
publicclass_340Test {
1010
privatestatic_340.Solution1solution1;
1111
privatestatic_340.Solution2solution2;
12+
privatestatic_340.Solution3solution3;
13+
privatestaticStrings;
14+
privatestaticintk;
15+
privatestaticintexpected;
1216

1317
@BeforeClass
1418
publicstaticvoidsetup() {
1519
solution1 =new_340.Solution1();
1620
solution2 =new_340.Solution2();
21+
solution3 =new_340.Solution3();
1722
}
1823

1924
@Test
2025
publicvoidtest1() {
21-
assertEquals(3,solution1.lengthOfLongestSubstringKDistinct("eceba",2));
22-
assertEquals(3,solution2.lengthOfLongestSubstringKDistinct("eceba",2));
26+
s ="eceba";
27+
k =2;
28+
expected =3;
29+
assertEquals(expected,solution1.lengthOfLongestSubstringKDistinct(s,k));
30+
assertEquals(expected,solution2.lengthOfLongestSubstringKDistinct(s,k));
31+
assertEquals(expected,solution3.lengthOfLongestSubstringKDistinct(s,k));
2332
}
2433

2534
@Test

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp