java - 何时用 256 初始化数组

标签 java c++ 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;
 }

为什么 char_set 数组初始化为 256?我在想这是因为有 128 个 ascii 字符,但我不确定。此外,这个解决方案似乎是用 Java 编写的,但如果用 C++ 完成,是否还需要初始大小?

最佳答案

I was thinking that it was because there are 128 ascii characters but I'm not sure.

没有。使用扩展的 ASCII 码,总共有 256 个字符。这就是 256 的原因。

http://www.asciitable.com/

除了256给出的原因外,请注意com/

请注意,正如 Erwin Bolwidt 所说,代码在任何情况下都充其量是不完整的,因为 Java“字符”不是 ASCII 也不是扩展的 ASCII。它们是“一个 16 位 Unicode 字符”,所以数组应该是 new boolean[65536]

关于java - 何时用 256 初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32878514/

相关文章:

java.lang.ClassCastException : java. math.BigDecimal 无法转换为 java.lang.Long

java - 使用 Fast-Video-View 自动启动视频

c++ - Boost tokenizer 将引用的字符串视为一个标记

c++ - 如何生成一个随机的、不重复的字符串 C++

arrays - Perl 多维数组访问

javascript - 根据另一个值存储数组的项目

java - 为什么在扩充自定义 Toast 消息时附加到根 ViewGroup?

java - Java Web 应用程序 SSO 的 Windows 集成身份验证

c++ - 类转换为类型

c++ - 列表框选择事件(LBN_SELCHANGE 和 LBN_DBLCLK)未触发