2016-10-01 3 views
-4

Я решал ниже проблему при чтении ее решения в первой строке. Я читал это. может кто-нибудь помочь мне в объяснении. Предположим, что char set является ASCII. ** Я не хочу другого решения этой проблемы. Я просто хочу понять утверждение * *Что означает предполагаемый набор символов ASCII?

Внедрите алгоритм, чтобы определить, имеет ли строка все уникальные символы. Что делать, если вы не можете использовать дополнительные структуры данных

Заранее за помощь.

+1

https://en.m.wikipedia.org/wiki/ASCII – Zarwan

ответ

0

В принципе, предположим, что коды символов будут находиться в диапазоне 0-127. Вам не нужно иметь дело с сумасшедшими акцентированными персонажами.

Скорее всего, они не будут использовать много, если любые коды ниже 32; поскольку они в основном не являются печатными.

0

Символы, такие как 'a' 'b' '1' или '#', кодируются в двоичное число при их сохранении и использовании компьютером.

например. '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

1

Там нет текста, но текст в кодировке.

Текст представляет собой последовательность «символов», входящих в набор символов. Набор символов представляет собой взаимно однозначное сопоставление между условным символом и неотрицательным целым числом, называемым кодовым числом.

Кодирование - это сопоставление между кодовой точкой и последовательностью байтов.

Примеры:

  • ASCII, 128 кодовых, один кодирующий
  • OEM437, 256 кодовые, один кодирующий
  • Windows, 1252, 251 кодовые, один кодирующий
  • ISO-8859-1, 256, один кодовые кодирования
  • Unicode, 1,114,112 кодовые, многие кодировки: UTF-8, UTF-16, UTF-32, ...

Когда вы получаете поток байтов или читаете файл, представляющий текст, вы должны указать набор символов и кодировку. И наоборот, когда вы отправляете поток байтов или записываете файл, представляющий текст, вы позволяете получателю знать набор символов и кодировку. В противном случае у вас есть сообщение об ошибке .

Примечание. Исходный код программы - это почти всегда текстовые файлы. Таким образом, это требование связи также применяется между вами, вашим редактором/IDE и вашим компилятором.

Примечание: ввод и вывод программной консоли являются текстовыми потоками. Таким образом, это требование связи также применяется между программой, ее библиотеками и консолью (оболочкой). Отправьте locale или chcp, чтобы узнать, что такое кодировка.

Многие наборы символов являются надмножеством ASCII, а некоторые кодировки отображают одни и те же символы с одинаковыми последовательностями байтов. Это вызывает много путаницы, ограничивает обучение, способствует использованию плохой терминологии, а частичная взаимосвязь приводит к ошибочному коду. Преднамеренный подход к спецификациям и кодированию устраняет это.

Примеры:

  • Некоторые люди говорят, что «ASCII», когда они имеют в виду общее подмножество символов между ASCII и набора символов, на самом деле они используют. В Unicode и в других местах это называется C0 Controls and Basic Latin.
  • Некоторые люди говорят «ASCII-код», когда они просто означают код или кодированные байты (или единицы кода).

Контекст вашего вопроса не ясно, но оператор пытается сказать, что различные символы в ваших данных в характере ASCII набора и, следовательно, их число меньше или равно 128. В связи с сходство между наборами символов, вы можете предположить, что диапазон кодирования, о котором вам нужно беспокоиться, составляет от 0 до 127. (Поместите комментарии, утверждения или исключения, применимые в вашем коде, чтобы сделать это понятным для читателей и обеспечить некоторую проверку времени выполнения.)

Это означает, что ваш язык программирования зависит от языка программирования и его библиотек. Многие современные языки программирования используют UTF-16 для представления строк и UTF-8 для потоков и файлов. Программы часто создаются со стандартными библиотеками, которые учитывают кодировку консоли (фактическую или предполагаемую) при чтении или записи с консоли.

Итак, если ваши данные взяты из файла, вы должны прочитать его, используя правильную кодировку. Если ваши данные поступают с консоли, стандартные библиотеки вашей программы, возможно, изменят кодировки из кодировки консоли на кодировку родного символа языка и стандартной библиотеки языка и строковых типов данных. Если ваши данные поступают из файла исходного кода, вы должны сохранить его в одной конкретной кодировке и сообщить компилятору, что это такое. (Обычно вы используете кодировку исходного кода по умолчанию, принятую компилятором, потому что обычно это не изменяется от системы к системе или от человека к человеку.)

«Дополнительные» биты структур данных, вероятно, относятся к стандарту языка библиотеки, такие как список, карта или словарь. Используйте то, чему вас научили до сих пор, например, просто массив. Конечно, вы можете просто спросить.

Смежные вопросы