Удалить из строки все слова, которые являются палиндромами - PascalABC.NET
Формулировка задачи:
Дана строка символов(текст). Составить программу, удаляющую из строки все слова, которые являются палиндромами.
Палиндром - это слово, которое одинаково читается слева направо и справа налево. Разделителями слов в строке считать символы: пробел, точка, запятая.
Решение задачи: «Удалить из строки все слова, которые являются палиндромами»
textual
Листинг программы
type r = System.Collections.Generic.KeyValuePair<char, integer>; begin var s : string := ReadString('Введите текст: '); var arr := (s + ' ').Select((v, i) -> new r(v, i)).Where(v -> Pos(v.Key, ' ,.') > 0).Reverse().ToArray(); for var i : integer := 0 to arr.Length - 2 do begin var start : integer := arr[i+1].Value + 1; var len : integer := arr[i].Value - arr[i+1].Value - 1; var sub : string := s.Substring(start, len); if ReverseString(sub.ToUpper()) = sub.ToUpper() then s := s.Remove(start, len); end; writeln(s); end.
Объяснение кода листинга программы
- Импортируется пространство имен System.Collections.Generic.
- Вводится тип r - это пара (ключ, значение), где ключ - символ, а значение - целочисленный индекс.
- Вводится переменная s типа string, в которую считывается строка из консоли.
- Вводится переменная arr типа List
, которая инициализируется при помощи LINQ-запроса. - Запрос выбирает все пары (символ, индекс), для которых символ присутствует в строке, разделенной пробелами, запятыми и точками.
- Результат запроса переинвертируется, чтобы получить пары в обратном порядке.
- Результат запроса преобразуется в массив.
- В цикле до длина arr минус два проходит цикл.
- Внутри цикла находятся индексы start и len, которые определяют подстроку, которую нужно удалить.
- Для определения, является ли подстрока палиндромом, вызывается функция ReverseString, преобразуется в верхний регистр и сравнивается с исходной подстрокой.
- Если подстрока является палиндромом, она удаляется из строки s при помощи метода Remove.
- В конце выводится измененная строка s.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д