第 15 课
- [2000. 反转单词前缀](https://leetcode-cn.com/problems/reverse-prefix-of-word/)
- [2006. 差的绝对值为 K 的数对数目](https://leetcode-cn.com/problems/count-number-of-pairs-with-absolute-difference-k/)
2000. 反转单词前缀
class Solution:
def reversePrefix(self, word: str, ch: str) -> str:
idx = word.find(ch) + 1
return word[:idx][::-1] + word[idx:] if idx != 0 else word
class Solution {
public String reversePrefix(String word, char ch) {
char[] arr = word.toCharArray();
for (int i = 0, j = word.indexOf(ch); i < j; i++, j--){
char tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
return new String(arr);
}
}
2006. 差的绝对值为 K 的数对数目
class Solution:
def countKDifference(self, nums: List[int], k: int) -> int:
# 方法一:
# res, n = 0, len(nums)
# for i in range(n):
# for j in range(i+1, n):
# if abs(nums[i]-nums[j]) == k:
# res += 1
# return res
# 方法二:哈希表
# res, d = 0, defaultdict(int)
# for i in nums:
# d[k+i] += 1
# # for i in nums:
# # res += d[i]
# return sum(d[i] for i in nums)
# 方法三:Counter
# res, c = 0, Counter()
# for i in nums:
# res += c[i + k] + c[i - k]
# c[i] += 1
# return res
c = Counter(nums)
return sum(c[i + k] for i in nums)
class Solution {
public int countKDifference(int[] nums, int k) {
int[] c = new int[200];
int ans = 0;
for (int num : nums){
ans += c[num + k] + (num >= k ? c[num - k] : 0);
c[num]++;
// c[num + k]++;
// if (num >= k) c[num - k]++;
// ans += c[num];
}
return ans;
}
}