程序员面试金典 <Cracking the Coding Interview> 面试题 01.01. 判定字符是否唯一 哈希

地址  https://leetcode-cn.com/problems/is-unique-lcci/

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

示例 1:
输入: s = "leetcode"
输出: false 

示例 2:
输入: s = "abc"
输出: true

限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。

算法1
(哈希) O(1) 
遍历字符串,使用哈希记录每个字符出现的次数
如果没有出现1次以上的记录 那么每个字符都是仅出现一次的

class Solution {
public:
    set<char> ss;
    bool isUnique(string astr) {
        for(int i = 0; i < astr.size();i++){
            if(ss.count(astr[i])!=0) return false;
            ss.insert(astr[i]);
        }

        return true;
    }
};

 

 

算法2
(哈希) O(1)O(1)
优化下速度 使用数组进行字符哈希
会比使用哈希数据结构 速度更快

class Solution {
public:
    int mm[300];
    bool isUnique(string astr) {
        for(int i = 0; i < astr.size();i++){
            if(mm[astr[i] -0] != 0) return false;
            mm[astr[i]-0]++;
        }

        return true;
    }
};

 

posted on 2021-02-28 15:05  itdef  阅读(119)  评论(0编辑  收藏  举报

导航