如果我需要检查一个字符串是否有唯一的字符,我知道如果我们考虑的是Ascii表中的字符,那么有128个字符。
但是,为什么我们需要制作一个大小为256的布尔数组来容纳128个字符来检查元素是否在字符串中至少存在一次?长度为128的布尔数组还不够吗?
下面是“破解编码面试”一书中的一段话:
if (str.length() > 128) return false;
boolean[] char_set = new boolean[256]; //which is strange since it clearly says over 128 its false
.
发布于 2016-07-20 22:07:33
基本上,我们只使用128个字符,这是程序中最常用的。但是ASCII表中的字符总数是256 (0到255)。0到31(总共32个字符)被称为ASCII控制字符(字符代码0-31)。32到127个字符被称为ASCII可打印字符(字符码32-127)。128到255被称为扩展ASCII码(字符码128-255)。
检查参考:http://www.ascii-code.com/
大多数扩展ASCII字符在QWERTY (英语)键盘中没有出现,所以这就是原因,作者在“破解编码面试”一书中的例子中总共使用了128个字符。
发布于 2015-02-21 22:46:42
不是,有256个ASCII字符。这包括标准ASCII字符(0-127)和扩展ASCII字符(128-255)。
发布于 2014-12-29 02:12:33
如今,许多人用"ASCII“这个术语来描述ISO-8859-1 (also known as Latin-1),这是一种包含32 ..126旧ASCII字符集的可打印字符值以及128..255范围内的值。拉丁语-1在覆盖西欧语言方面做得相当好,而ASCII仅限于基本英语中使用的非重音字符。
ASCII还包括0-31和127范围内的控制字符。它们不表示可打印的字符(尽管unicode在这些位置提供了字符)。它们是return、linefeed、tab、ctrl-c、formfeed等。其中一些是电传打字机和电传传真机的旧物。
请注意,纸带在每帧中有8个位位置。这些是ASCII /拉丁文-1的比特。"Delete“,又名”Rubout“是127或0111 1111。为什么?因为有可能把磁带上的所有七个孔都打出来,擦掉一个字符。
这可能解释了有人建议使用256位数组来将这种字符集中的文本制表的原因。
https://stackoverflow.com/questions/27679137
复制相似问题