何时用256初始化数组

lor*_*771 6 c++ java arrays

我正在通过破解编码采访书解决方案并注意到以下问题:

实现算法以确定字符串是否具有所有唯一字符.如果您不能使用其他数据结构怎么办?

这是提供的解决方案之一:

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++中完成,那么初始大小也是必要的吗?

Sur*_*tta 6

我原以为是因为有128个ascii字符,但我不确定.

不可以.使用扩展的ASCII码,总共有256个字符.这就是256的原因.

http://www.asciitable.com/

除了给出的理由256,请注意com /

请注意,正如Erwin Bolwidt所说,代码在任何情况下都是不完整的,因为Java"字符"不是ASCII也不是扩展ASCII.它们是"16位Unicode字符",因此数组应该是新的布尔值[65536]