假设char集是什么意思?

时间:2016-10-01 16:31:24

标签: data-structures

我在第一行阅读其解决方案时正在解决下面的问题 任何人都可以帮我解释假设char集是ASCII **我不想要任何其他解决这个问题的方法我只想了解声明**

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

  

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

没有文字,只有编码文字。

文本是一系列“字符”,即字符集的成员。字符集是名义字符和非负整数(称为代码点)之间的一对一映射。

编码是代码点和字节序列之间的映射。

示例:

  • ASCII,128个代码点,一个编码
  • OEM437,256个代码点,一个编码
  • Windows-1252,251个代码点,一个编码
  • ISO-8859-1,256个码点,一个编码
  • Unicode,1,114,112个代码点,许多编码:UTF-8,UTF-16,UTF-32,......

当您收到字节流或读取表示文本的文件时,您必须知道字符集和编码。相反,当您发送字节流或写入表示文本的文件时,你让接收者知道字符集和编码。否则,您的通信失败。

注意:程序源代码几乎总是文本文件。因此,此通信要求也适用于您,编辑器/ IDE和编译器之间。

注意:程序控制台输入和输出是文本流。因此,此通信要求也适用于程序,其库和控制台(shell)。转到localechcp,了解编码的内容。

许多字符集是ASCII的超集,某些编码使用相同的字节序列映射相同的字符。这会导致很多混乱,限制学习,促进不良术语的使用以及部分互操作性导致错误的代码。对规范和编码的深思熟虑的方法消除了这一点。

示例:

  • 有人说“ASCII”,它们是指ASCII与实际使用的字符集之间的共同字符子集。在Unicode和其他地方,这称为C0 Controls and Basic Latin
  • 有些人说“ASCII代码”只是指代码点或代码点的编码字节(或代码单元)。

您的问题的上下文不清楚,但声明试图说明数据中的不同字符是ASCII字符集,因此它们的数字小于或等于128.由于字符集之间的相似性,您可以假设您需要关注的代码点范围是0到127.(在您的代码中应用注释,断言或异常,以便向读者明确并提供一些运行时检查。)

这在编程语言中的含义取决于编程语言及其库。许多现代编程语言使用UTF-16来表示字符串,使用UTF-8表示流和文件。程序通常使用标准库构建,这些库在从控制台读取或写入时考虑控制台的编码(实际或假设)。

因此,如果您的数据来自文件,则必须使用正确的编码来读取它。如果您的数据来自控制台,则程序的标准库可能会将控制台编码的编码更改为语言或标准库的本机字符和字符串数据类型的编码。如果您的数据来自源代码文件,则必须将其保存为一个特定的编码,并告诉编译器它是什么。 (通常,您将使用编译器假定的默认源代码编码,因为它通常不会在系统之间或人与人之间发生变化。)

“附加”数据结构位可能指的是语言的标准库提供的内容,例如列表,地图或字典。使用到目前为止你所教过的内容,比如可能只是一个数组。当然,你可以问一下。

答案 1 :(得分:0)

基本上,假设字符代码将在0-127范围内。你不需要处理疯狂的重音字符。

但很可能,他们不会使用很多,如果任何代码低于32;因为那些大部分都是非印刷品。

答案 2 :(得分:0)

诸如'a''b''1'或'#'之类的字符在由计算机存储和使用时被编码为二进制数。

e.g。 'a'= 1100001 'b'= 1100010

您可以使用许多不同的标准进行此编码。 ASCII是这些标准之一。另一个最常见的标准叫做UTF-8。

并非所有标准都可以编码所有字符。 ASCII具有比UTF-8更有限的字符集。因此,编码还定义了该编码支持的字符集“char set”。

ASCII将每个字符编码为单个字节。它支持字母A-Z,小写字母a-z,数字0-9,少量熟悉的符号,以及早期通信协议中使用的许多控制字符。

可以在此处看到ASCII支持的完整字符集:https://en.wikipedia.org/wiki/ASCII