【发布时间】:2015-05-17 08:30:41
【问题描述】:
我有一个关于使用位向量方法来查找字符串是否具有唯一字符的问题。我已经看到那些解决方案 (one of them) 适用于 ASCII 和 UTF-16 字符集。
但是,相同的方法如何适用于 UTF-32? Java中最长的连续位向量可以是长变量吗? UTF-16 需要 1024 个这样的变量。如果我们采用相同的方法,它将需要 2^26 个长变量(我认为)。这么大的字符集能用位向量解决吗?
【问题讨论】:
-
这个问题是非常开放的;一些带有特定问题的代码会更好。我也不同意 utf-16 和 utf-32 需要不同数量的描述符/向量来完全描述 utf 字符集。
-
在您的问题的上下文中,这些是否不同:
a、a后跟 Unicode 组合“字符”分音符号,或a与分音符号(“aää”,即四个码点)? -
@TomBlodget 是的。我不太清楚你所说的代码点是什么意思,但我实际上把这个问题想象成比较数字字节值。所以
a和ä本身并不相等。 -
代码点是“字符”集的一个元素;一个可能有也可能没有与之关联的“字符”的数字。 Unicode 有一些称为“组合字符”的代码点。一个非组合码点后面可以跟任意数量的组合码点。它们一起形成了一个字形。不幸的是,Unicode 具有相同字素的多种表示形式:“ä”与“ä”。通过规范化,您可以将“ä”(U+00E4)转换为“ä”(U+0061 U+0308),但在与“a”(U+0061)进行比较时,您必须考虑到这一点。跨度>
标签: java string bitvector utf-32