2399.检查相同字母间的距离
链接:2399.检查相同字母间的距离
难度:Easy
标签:数组、哈希表、字符串
简介:如果 s 是一个 匀整 字符串,返回 true ;否则,返回 false 。
题解 1 - cpp
- 编辑时间:2023-04-09
- 内存消耗:12.8MB
- 编程语言:cpp
- 解法介绍:遍历。
class Solution {
public:
    bool checkDistances(string s, vector<int>& distance) {
        vector<int> list(26, -1);
        for (int i = 0; i < s.size(); i++) {
            if (list[s[i] - 'a'] == -1) list[s[i] - 'a'] = i;
            else if (i - list[s[i] - 'a'] - 1 != distance[s[i] - 'a']) return false;
        }
        return true;
    }
};
题解 2 - python
- 编辑时间:2023-04-09
- 执行用时:68ms
- 内存消耗:14.8MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
    def checkDistances(self, s: str, distance: List[int]) -> bool:
        l = [-1] * 26
        for i in range(len(s)):
            idx = ord(s[i]) - ord('a')
            if list[idx] == -1:
                list[idx] = i
            elif i - list[idx] - 1 != distance[idx]:
                return False
        return True
题解 3 - javascript
- 编辑时间:2022-09-04
- 执行用时:68ms
- 内存消耗:43.4MB
- 编程语言:javascript
- 解法介绍:遍历。
var checkDistances = function (s, distance) {
        const cache = {};
        for (let i = 0; i < s.length; i++) {
          const prev = cache[s[i]];
          if (prev !== undefined) {
            const d = distance[s.codePointAt(i) - 'a'.codePointAt(0)];
            if (d !== i - prev - 1) return false;
          } else {
            cache[s[i]] = i;
          }
        }
        return true;
      };
题解 4 - rust
- 编辑时间:2023-04-09
- 内存消耗:2MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
    pub fn check_distances(s: String, distance: Vec<i32>) -> bool {
        let s: Vec<usize> = s.chars().map(|v| v as usize).collect();
        let mut list = vec![-1i32; 26];
        for i in 0..s.len() {
            let idx = s[i] - 'a' as usize;
            if list[idx] == -1 {
                list[idx] = i as i32;
            } else if i as i32 - list[idx] - 1 != distance[idx] {
                return false;
            }
        }
        true
    }
}