【发布时间】:2015-02-25 01:33:27
【问题描述】:
如果我需要检查一个字符串是否有唯一字符,我知道如果我们正在考虑 Ascii 表中的字符,那么其中会有 128 个。
但是,为什么我们需要创建一个大小为 256 的布尔数组来容纳 128 个字符来检查字符串中是否至少存在一次元素?大小为 128 的布尔数组不应该足够吗?
这是《Cracking the Coding Interview》一书中的一段话:
if (str.length() > 128) return false;
boolean[] char_set = new boolean[256]; //which is strange since it clearly says over 128 its false
.....
【问题讨论】:
-
谁说你“需要创建一个大小为 256”的布尔数组?
-
@VáclavZeman 说了什么。我会注意到,尽管传统的 8 位字符集通常被错误地称为“ASCII”,所以说这句话的人(老师?)也许受到了它的影响。
-
这是破解编码面试的解决方案:if (str.length() > 28) return false; boolean[] char_set = new boolean[256];这就是建议的解决方案。
-
现在更新为“new boolean[128]”。 github.com/careercup/ctci/blob/master/java/Chapter%201/…
标签: ascii