【发布时间】:2014-10-12 15:21:12
【问题描述】:
解决方案:
public boolean isUniqueChars2(String str) {
if (str.length() > 256) return false;
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;
}
我有一些问题:
编码是基于给定字符串是ASCII字符串的前提,如果是Unicode字符串怎么办? ASCII字符串和Unicode字符串有什么区别?
int val=str.charAt(i) 我搜索了ASCII表,
如果字符串是“@ABCD”,会返回什么数字?(使用“Dec, Hx, Oct”这三个中的哪一个?)
- str.charAt(i) 应该返回一个字符(例如 A),为什么将数据类型声明为 int 可以直接将字符转换为相应的 ASCII 表的数字?
【问题讨论】:
-
ASCII 只有 128 个字符。您必须从几十个最多 256 个字符的其他字符集中获得 256 个字符。
-
Unicode 有很多细微差别。该标准指的是“字素”的概念,这可能是您所认为的“字符”。需要思考的一些问题:您是否想将带有重音 ("\u00E1") 的 'a' 与带有重音 ("\u0061\u0301") 的 'a' 相同,并且两者都不同于不带重音的 'a'重音(“\u0061”)?如果是这样,你必须规范化。您想处理需要两个 Java
chars 编码的代码点吗?音乐符号八分音符???? ("\uD834\uDD60") 不同于音乐符号十六分音符???? ("\uD834\uDD61").