Skip to content

Commit d5774fd

Browse files
solves #2399: Check Distances Between Same Letters in java
1 parent 907bb3e commit d5774fd

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -764,7 +764,7 @@
764764
| 2383 | [Minimum Hours of Training to Win a Competition](https://leetcode.com/problems/minimum-hours-of-training-to-win-a-competition) | [![Java](assets/java.png)](src/MinimumHoursOfTrainingToWinACompetition.java) | |
765765
| 2389 | [Longest Subsequence With Limited Sum](https://leetcode.com/problems/longest-subsequence-with-limited-sum) | [![Java](assets/java.png)](src/LongestSubsequenceWithLimitedSum.java) | |
766766
| 2395 | [Find Subarrays With Equal Sum](https://leetcode.com/problems/find-subarrays-with-equal-sum) | [![Java](assets/java.png)](src/FindSubarraysWithEqualSum.java) | |
767-
| 2399 | [Check Distances Between Same Letters](https://leetcode.com/problems/check-distances-between-same-letters) | | |
767+
| 2399 | [Check Distances Between Same Letters](https://leetcode.com/problems/check-distances-between-same-letters) | [![Java](assets/java.png)](src/CheckDistancesBetweenSameLetters.java) | |
768768
| 2404 | [Most Frequent Even Element](https://leetcode.com/problems/most-frequent-even-element) | | |
769769
| 2409 | [Count Days Spent Together](https://leetcode.com/problems/count-days-spent-together) | | |
770770
| 2413 | [Smallest Even Multiple](https://leetcode.com/problems/smallest-even-multiple) | | |

Diff for: src/CheckDistancesBetweenSameLetters.java

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// https://leetcode.com/problems/check-distances-between-same-letters
2+
// T: O(N)
3+
// S: O(1)
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
public class CheckDistancesBetweenSameLetters {
9+
public boolean checkDistances(String s, int[] distances) {
10+
final Map<Character, Integer> firstOccurrenceIndex = new HashMap<>();
11+
for (int index = 0 ; index < s.length() ; index++) {
12+
char letter = s.charAt(index);
13+
if (firstOccurrenceIndex.containsKey(letter)) {
14+
int distance = index - firstOccurrenceIndex.get(letter) - 1;
15+
if (distance != distances[letter - 'a']) {
16+
return false;
17+
}
18+
} else firstOccurrenceIndex.put(letter, index);
19+
}
20+
return true;
21+
}
22+
}

0 commit comments

Comments
 (0)