使用位操作确定字符串中的所有字符是否唯一

问题描述 投票:-3回答:1

执行确定字符串中所有字符是否唯一的算法。

有人可以向我解释如何使用位操作吗?有一种使用CTCI中的位提供的解决方案,但我无法理解。

python string
1个回答
0
投票

[人们在网上说的话,似乎是这样的:

[假设您有一个字符串(仅包含来自集合a-z或来自集合A-Z的字符,但不同时包含这两个字符),则可以通过使用按位运算来翻转整数位来跟踪以前看到过哪些字符。例如,如果您的字符串是“ aza”,则将整数的第一位设置为1,然后将第二十六位设置为1,然后尝试设置第一位再次为1。由于已经被翻转,因此您可以断言该字符以前见过,因此不是唯一的。字符集(a-z或A-Z)的限制似乎是由于以下事实造成的:大多数语言中字母表中有26个字母,整数中有32位,因此您有足够的位来表示整个字母表。

但是,我认为这不是使用Python解决问题的好方法,因为整数在Python中具有任意精度。我认为,这通常也不是一个很好的解决方案。最好使用set()来跟踪以前看到的字符,然后断言字符串的长度与集合的长度匹配。

© www.soinside.com 2019 - 2024. All rights reserved.