我正在通过破解编码采访书解决方案并注意到以下问题:
实现算法以确定字符串是否具有所有唯一字符.如果您不能使用其他数据结构怎么办?
这是提供的解决方案之一:
public static boolean isUniqueChars2(String str) {
boolean[] char_set = new boolean[256];
for (int i = 0; i < str.length(); i++) {
int val = str.charAt(i);
if (char_set[val]) return false;
char_set[val] = true;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
为什么char_set数组初始化为256?我原以为是因为有128个ascii字符,但我不确定.此外,这个解决方案似乎是在Java中,但如果在C++中完成,那么初始大小也是必要的吗?
我原以为是因为有128个ascii字符,但我不确定.
不可以.使用扩展的ASCII码,总共有256个字符.这就是256的原因.
除了给出的理由256,请注意com /
请注意,正如Erwin Bolwidt所说,代码在任何情况下都是不完整的,因为Java"字符"不是ASCII也不是扩展ASCII.它们是"16位Unicode字符",因此数组应该是新的布尔值[65536]