zoukankan      html  css  js  c++  java
  • letcode 第三题 判定字符是否唯一

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

    示例 1:

    输入: s = "leetcode"
    输出: false 

    示例 2:

    输入: s = "abc"
    输出: true

    方法一:

    使用一个简单的count()函数,统计每一个单词的数字,再来判断。(Set也同理,字典也行,列表也行)

    class Solution:
        def isUnique(self, astr: str) -> bool:
            for i in astr:
                if astr.count(i)>1:
                    return False
            return True


    字典使用的是

    def isUnique(self, astr: str) -> bool:
      adict={}
      for value in astr:
        if value in adict.keys():
          return False
        else:
          adict[value]=0
      return True



    class Solution:
    def isUnique(self, astr: str) -> bool:
    return len(astr)== len(set(astr))

    方法二:

    使用位运算。

    我们可以使用一个int类型的变量(下文用mark表示)来代替长度为26的bool数组。假设这个变量占26个bit(在多数语言中,这个值一般不止26)。

    那么我们可以把它看成000...00(26个0),这26个bit对应着26个字符,对于一个字符c,检查对应下标的bit值即可判断是否重复。

    学到了。

    class Solution:
      def isUnique(self, astr: str) -> bool:
        mark = 0
        for char in astr:
          move_bit = ord(char) - ord('a')
          if (mark & (1 << move_bit)) != 0:
            return False
          else:
            mark |= (1 << move_bit)
        return True。

    作者:zhen-zhu-hao-hao-chi
    链接:https://leetcode-cn.com/problems/is-unique-lcci/solution/wei-yun-suan-fang-fa-si-lu-jie-shao-by-zhen-zhu-ha/
    来源:力扣(LeetCode)

  • 相关阅读:
    设计模式之Singleton(单态)(转)
    shell编程与循环
    连接查询、视图、事务、索引、外键
    mariadb主从架构
    Lvs虚拟服务器
    python字符串详解
    firewalld防火墙详解
    自动化运维ansible用法
    元组、列表、字典、集合
    内置函数for、while循环控制
  • 原文地址:https://www.cnblogs.com/jackson669/p/12842261.html
Copyright © 2011-2022 走看看