0
点赞
收藏
分享

微信扫一扫

vlunstack-2(复现红日安全-ATT& CK实战)

紫荆峰 2024-08-06 阅读 22

 题目要求

找到字符串列表中的第k个唯一的字符串。

思路

找到字符串中唯一的字符串,就是判断字符串是否重复出现,因此很自然的想到用哈希表。首先想到用字符数组来存储,结果发现arr中存储的是字符串。因此采用unordered_map

class Solution {
public:
    string kthDistinct(vector<string>& arr, int k) {
        int record[26] = {0};
        for (int i = 0; i < arr.size(); ++i) {
            if (record[arr[i] - 'a'] == 0) {
                k--;
            }
            record[arr[i] - 'a']++;
            if (k == 0) {
                return arr[i];
            }
        }
    }
};
C++(如果只出现一次就是Distinct,在哈希表中数值为1)
class Solution {
public:
    string kthDistinct(vector<string>& arr, int k) {
        unordered_map<string, int> countMap;
        for (const string& s : arr) {
            countMap[s]++;
        }
        // Find k-th distinct string
        for (const string& s : arr) {
            if (countMap[s] == 1) {
                k--;
                if (k == 0) {
                    return s;
                }
            }
        }
        return "";
    }
};
Python(Counter能够直接把列表变成哈希表)
from collections import Counter
class Solution:
    def kthDistinct(self, arr: List[str], k: int) -> str:
        # Count the occurrences of each string
        countMap = Counter(arr)

        # find the k-th distinct string
        for s in arr:
            if countMap[s] == 1:
                k -= 1
                if k == 0:
                    return s
        
        return ""
举报

相关推荐

0 条评论