判断字符是否唯一

实现一个算法,确定一个字符串  s  的所有字符是否全都不同。
示例  1:
      输入:  s  =  "leetcode"
      输出:  false
示例  2:
        输入:  s  =  "abc"
        输出:  true
限制:
        0  <=  len(s)  <=  100
        如果你不使用额外的数据结构,会很加分。

自我解答

        最简单的自然是使用map记录,如果字符在map存在,则说明重复了。
        但是题目希望不使用额外的数据结构,于是我想到了排序,若在在排序中发现相等的,则直接放回False
        这里我选择的快速排序,由于  python不允许字符串中的字符被重新赋值,我把字符串转成了数组

class Solution:
    def isUnique(self, astr: str) -> bool:
        self.datas = [s for s in astr]
        return self.quick_sort(0, len(astr) - 1)

    def quick_sort(self, start_index, end_index):
        if start_index >= end_index:
            return True
        i, j, base = start_index, end_index, self.datas[start_index]
        while i != j:
            while i != j:
                if self.datas[j] == base:
                    return False
                if self.datas[j] < base:
                    self.datas[i] = self.datas[j]
                    i += 1
                    break
                j -= 1
            while i != j:
                if self.datas[i] == base:
                    return False
                if self.datas[i] > base:
                    self.datas[j] = self.datas[i]
                    j -= 1
                    break
                i += 1
        self.datas[i] = base
        return self.quick_sort(i + 1, end_index) and self.quick_sort(start_index, i - 1)

原题链接:https://leetcode-cn.com/problems/is-unique-lcci