Оставить в строке только первое и последнее вхождение цифр каждого слова - PascalABC.NET
Формулировка задачи:
Дана строка s, оставить в ней только первое и последнее вхождение цифр каждого слова, распечатать строку.
Тоисть на вход 10001 555111, на выходе должно быть 1001 5511
Решение задачи: «Оставить в строке только первое и последнее вхождение цифр каждого слова»
textual
Листинг программы
var L: List<KeyValuePair<integer, integer>> := new List<KeyValuePair<integer, integer>>; begin var s: string := '100001 555111'; var wrd: string; for var i: integer := 1 to s.Length do begin if (s[i] = ' ') or (i = s.Length) then begin wrd := wrd + (i = s.Length ? '' + s[i] : ''); L.Add(new KeyValuePair<integer, integer>(i + ord(i = s.Length) - wrd.Length - 1, wrd.Length)); wrd := ''; end else wrd := wrd + s[i]; end; L.Reverse; foreach var pair in L do begin wrd := s.Substring(pair.key, pair.value); for var i: integer := wrd.Length downto 1 do wrd := wrd.Remove(pred(i), ord((wrd.IndexOf(wrd[i]) < pred(i)) and (wrd.LastIndexOf(wrd[i]) > pred(i)))); s := s.Remove(pair.key, pair.value).Insert(pair.key, wrd); end; writeln(s); end.
Объяснение кода листинга программы
В данном коде на языке PascalABC.Net реализована задача по обработке строки, в которой необходимо оставить только первое и последнее вхождение цифр каждого слова. Список переменных и их значений:
- L - список пар ключ-значение, где ключ - позиция первого вхождения цифры слова, а значение - длина слова.
- s - исходная строка, содержащая цифры.
- wrd - текущее слово, найденное в строке. Последовательность выполнения кода:
- Инициализация пустого списка L.
- Проход по каждому символу строки s.
- Если текущий символ является пробелом или равен последнему символу строки, то добавляем в список L пару ключ-значение, где ключ - позиция следующего символа (с учетом добавления пробела в конце строки), а значение - длина текущего слова wrd.
- Обновляем текущее слово wrd, добавляя в него текущий символ.
- После прохода по всем символам строки, переворачиваем список L, чтобы получить список пар ключ-значение в обратном порядке.
- Проход по каждой паре ключ-значение из списка L.
- Получаем текущее слово wrd, используя ключ и значение пары.
- Удаляем все повторяющиеся символы в слове wrd, начиная с последнего и до первого.
- Заменяем в исходной строке s подстроку, соответствующую ключу пары, на полученное слово wrd.
- Выводим полученную строку s.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д