算法题:判定字符是否唯一

75 阅读1分钟

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

  • 0 <= len(s) <= 100
  • s[i]仅包含小写字母
  • 如果你不使用额外的数据结构,会很加分。

用一个大小为26的数组去存,字母下标的数量,遍历一遍就可以了,却不是最佳解法

class Solution {
    fun isUnique(astr: String): Boolean {
        val chars = astr.toCharArray()
        val array = IntArray(26)
        for(c in chars){
            if( array[c.toInt()-97] == 0){
                array[c.toInt()-97]++
            } else{
                return false
            }
        }
        return true
    }
}

用一个bit位为64 的long类型去左移再按位与

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