"a b c d"
我想知道这段代码如何忽略space()并为唯一字符返回true。
举个例子:$ pydocstyle test.py
test.py:18 in private nested class `meta`:
D101: Docstring missing
test.py:27 in public function `get_user`:
D300: Use """triple double quotes""" (found '''-quotes)
test:75 in public function `init_database`:
D201: No blank lines allowed before function docstring (found 1)
返回true。但是空间也有Unicode值,当遇到空格2次时它应该返回false。为什么不呢?
答案 0 :(得分:2)
因为1 << (' ' - 'a')
是负数,所以由位掩码提取的int:
(checker & (1 << val))
也是否定的。
将条件更改为
if ((checker & (1<< val)) != 0) return false;
// ^^ Here.
但是:您只有32位用于指示先前检测到的char
,并且有{655}可能的val
值:此方法对其他方法会很快失败字符串。
例如,该方法会声称"Aa"
,"R2"
和" @"
(空格,后跟at符号)有重复的字符,这显然是错误的。
由于ASCII码点的排列,只有发生发生才能用于"a b c d"
- 空间恰好不会与字符串中的任何其他符号冲突,模32。
答案 1 :(得分:-1)
您应该使用replaceAll()
替换string
中的所有空格(或您指定的任何其他字符)。