我是靠谱客的博主 阔达哈密瓜,最近开发中收集的这篇文章主要介绍《程序员面试金典》面试题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 判定字符是否唯一所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部