我是靠谱客的博主 阔达哈密瓜,这篇文章主要介绍《程序员面试金典》面试题01.01 判定字符是否唯一,现在分享给大家,希望可以做个参考。

在这里插入图片描述
位向量法:
位运算符号:
& 与
| 或
^ 异或
~ 取反
<< 左移(乘),右补0
>> 右移(除),正数左补0,负数左补1

class Solution {
public:
    bool isUnique(string astr) {
        int checker = 0;
        for(int i=0;i<astr.size();i++){
            int val = astr[i] - 'a';
            if((checker & (1<<val))>0){
                return false;
            }
            checker |= (1<<val);
        }
        return true;
    }
};

checker的每一位代表的是一个字母,通过val计算出字符与’a’的距离,获得它应该对应的位。
1<<val使得只有字符那一位为1。
checker & (1<<val)是为了检查当前字符是否在之前出现过。
checker |= (1<<val):记录当前字符出现过。

最后

以上就是阔达哈密瓜最近收集整理的关于《程序员面试金典》面试题01.01 判定字符是否唯一的全部内容,更多相关《程序员面试金典》面试题01.01内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部