Featured image of post Is Unique

Is Unique

判断字符是否唯一

分析

  1. 用一个整型变量 check 作为位掩码(bitmask),其每一位表示一个字符是否出现
  2. 遍历字符串中的每个字符:
    • 如果该字符之前出现过(对应位为 1),说明不唯一,返回 false
    • 否则将对应位设为 1
  3. 遍历完成仍未发现重复,返回 true

时间复杂度

时间复杂度 O(n)

空间复杂度

空间复杂度为 O(1)

C++代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
    bool isUnique(string astr)
    {
        int check = 0;  // 位掩码,初始为 0

        for (char c : astr)
        {
            // 计算字符在字母表中的索引位置(0~25)
            int bit = c - 'a';

            // 如果对应位已为 1,说明重复
            if (check & (1 << bit))
                return false;

            // 否则将该位置为 1
            check |= (1 << bit);
        }

        // 所有字符都不同
        return true;
    }
};
Built with Hugo
Theme Stack designed by Jimmy