Задачи на строки

Задачи на строки по программированию

Книги

к содержанию задачника

  1. Дана строка. Вывести ее три раза через запятую и показать количество символов в ней.
  2. Дана строка. Вывести первый, последний и средний (если он есть)) символы.
  3. Дана строка. Вывести первые три символа и последний три символа, если длина строки больше 5. Иначе вывести первый символ столько раз, какова длина строки.
  4. Сформировать строку из 10 символов. На четных позициях должны находится четные цифры, на нечетных позициях - буквы.
  5. Дана строка. Показать номера символов, совпадающих с последним символом строки.
  6. Дана строка. Показать третий, шестой, девятый и так далее символы.
  7. Дана строка. Определите общее количество символов '+' и '-' в ней. А так же сколько таких символов, после которых следует цифра ноль.
  8. Дана строка. Определите, какой символ в ней встречается раньше: 'x' или 'w'. Если какого-то из символов нет, вывести сообщение об этом.
  9. Даны две строки. Вывести большую по длине строку столько раз, на сколько символов отличаются строки.
  10. Дана строка. Если она начинается на 'abc', то заменить их на 'www', иначе добавить в конец строки 'zzz'.
  11. Дана строка. Если ее длина больше 10, то оставить в строке только первые 6 символов, иначе дополнить строку символами 'o' до длины 12.
  12. Дана строка. Разделить строку на фрагменты по три подряд идущих символа. В каждом фрагменте средний символ заменить на случайный символ, не совпадающий ни с одним из символов этого фрагмента. Показать фрагменты, упорядоченные по алфавиту.
  13. Дана строка. Заменить каждый четный символ или на 'a', если символ не равен 'a' или 'b', или на 'c' в противном случае.
  14. В данной строке найти количество цифр.
  15. Дана строка. Определить, содержит ли строка только символы 'a', 'b', 'c' или нет.
  16. Замените в строке все вхождения 'word' на 'letter'.
  17. Удалите в строке все буквы 'x'. за которыми следует 'abc'.
  18. Удалите в строке все 'abc', за которыми следует цифра.
  19. Найдите количество вхождения 'aba' в строку.
  20. Удалить в строке все лишние пробелы, то есть серии подряд идущих пробелов заменить на одиночные пробелы. Крайние пробелы в строке удалить.
  21. Дана строка, состоящая из слов, разделенных символами, которые перечислены во второй строке. Показать все слова.
  22. Дан текст. Найдите наибольшее количество идущих подряд цифр.
  23. Дан текст. Найти сумму имеющихся в нем цифр.

  24. Дан текст. Найти слова, состоящие из цифр, и сумму чисел, которые образуют эти слова.
  25. Дан текст. Найдите наибольшее количество подряд идущих пробелов в нем.
  26. Даны два слова. Найдите только те символы слов, которые встречаются в обоих словах только один раз.
  27. Дан массив строк. Упорядочить массив по длине строк.
  28. Дан массив строк. Переставить строки в зависимости от количества цифр в строке.
  29. Дана строка. Заменить все символы 'a' и 'b' на 'A' и 'B' соответственно.
  30. Дан текст. Сформировать строку из символов, расположенных между первой и второй запятыми данного текста. Материал сайта www.itmathrepetitor.ru
  31. Дана строка. Удалите k-ый символ в ней.
  32. Даны две строки. Определите, содержится ли меньшая по длине строка в большей.
  33. Даны две строки. Определите, можно ли из некоторых символов первой строки составить вторую строку.
  34. Даны две строки. Определите, можно ли из некоторых символов первой строки и всех символов второй строки составить новую строку, в которой каждый символ встречается ровно два раза.
  35. Удалить в строке все цифры.
  36. Удалите в строке все символы "!".
  37. В строке найдите все серии подряд идущих пробелов и замените каждую на один пробел.
  38. Дана строка, состоящая из слов, разделенных пробелами. Определите количество слов в строке.
  39. В данной строке вставить после каждого символа 'a' символ 'b'.
  40. Даны две строки. Удалить в первой строке первое вхождение второй строки.
  41. Дана строка. Определите, является ли она действительным числом.
  42. Строка состоит из слов, разделенных одним или несколькими пробелами. Найдите слово наибольшей длины.
  43. В строке записано десятичное число. Запишите данное число римскими цифрами.
  44. Дан email в строке. Определить, является ли он корректным (наличие символа @ и точки, наличие не менее двух символов после последней точки и т.д.).
  45. Написать функцию генерации email.
  46. Дано натуральное число. Получить строку, в которой тройки цифр этого числа разделены пробелом, начиная с правого конца. Например, число 1234567 преобразуется в 1 234 567.
  47. Вывести слова, в которых заменить каждую большую букву одно-именной малой; удалить все символы, не являющиеся буквами или цифрами; вывести в алфавитном порядке все гласные буквы, входящие в каждое слово строки.
  48. Вывести текст, составленный из первых букв всех слов; все слова, содержащие больше одной буквы «s».
  49. Вывести в алфавитном порядке все слова, содержащие наибольшее количество гласных букв; найти все слова, в которые буква «а» входит не менее двух раз.
  50. Дана строка. Вставить после каждого символа пробел.
  51. Дана строка. Вставить после каждого символа два случайных символа.
  52. Дана строка. Если в строке больше трех различных символов, то удалить в строке три любых различных символа, иначе добавить в строку в произвольных местах новые элементы так, чтобы количество различных элементов было больше трех.
  53. Написать алгоритм генерации пароля.  Дополнить программу возможностью определить, сгенерирован ли данный пароль вашим алгоритмом. Материал сайта www.itmathrepetitor.ru
  54. Написать генерацию строк длины 10, причем первые 4 символа - цифры, следующие два символы - различные буквы, следующие 4 символа - нули или единицы, причем одна единица точно присутствует.
  55. Написать генерацию строк длины 12, первые 5 символов которой - четные цифры, следующие 5 символов - буквы 'a' - 'z', следующие 2 символа - "AB", если среди первых пяти символов строки есть цифра 8, "XY"  - если нет.
  56. Строка состоит из слов, разделенных одним или несколькими пробелами. Поменяйте местами наибольшее по длине слово и наименьшее.
  57. Даны два предложения. Для каждого слова первого предложения определите количество его вхождений во второе предложение.
  58. Строка состоит из слов, разделенных одним или несколькими пробелами. Переставьте слова в алфавитном порядке.
  59. Строка состоит из слов, разделенных одним или несколькими пробелами. Переставьте слова по убыванию их длин.
  60. Дана строка, которая содержит натуральные числа, знаки четырех арифметических действий (сложение, вычитание, умножение, деление) и скобки. Вычислите значение выражения.
  61. Дана строка, в которой нет начальных и конечных пробелов. Необходимо изменить ее так, чтобы длина строки стала равна заданной длине, больше чем текущая длина строки. Это следует сделать путем вставки между словами дополнительных пробелов. Количество пробелов между отдельными словами не должно отличаться более чем на один пробел (то есть пробелы добавляются равномерно).
  62. Дана строка, представляющая из себя арифметическое выражение, состоящее из чисел, скобок и арифметических операций. Проверьте данное выражение на правильность расстановки скобок.
  63. Дана строка, содержащая полное имя файла (например, 'c:\WebServers\home\testsite\www\myfile.txt'). Выделите из этой строки имя файла без расширения.
  64. Дана строка. Если символы в ней упорядочены по алфавиту, то вывести 'yes', иначе вывести первый символ, нарушающий алфавитный порядок.
  65. Дана строка, содержащая буквы и скобки '(', ')', '[', ']', '{', '}'. Если скобки расставлены правильно (то есть каждой открывающей скобки соответствует закрывающая того же вида), то вывести 'yes', иначе вывести номер первой ошибочной скобки или -1, если закрывающая скобка отсутствует.
  66. Даны две строки. Выделить из каждой строки наибольшей длины подстроки, состоящие только из цифр, и объедините эти подстроки в одну новую строку.
  67. Даны три строки. Заменить все вхождения второй строки в первую на третью строку.
  68. Дан текст. Найдите в нем все числа, окруженные пробелами, и добавьте перед ними '<' и после них '>'.
  69. Дан текст. Некоторые его фрагменты выделены группами символов ##. Заменить выделение группами символов '<' и '>)'. Пример: 'Это ##тестовый пример## для задачи ##на## строки' преобразуется в 'Это <тестовый> пример для задачи <на> строки'
  70. Дан текст и список слов. Найти в тексте все слова, каждое из которых отличается от некоторого слова из списка одной буквой, и исправить такие слова на слова из списка.
  71. Дан текст. Заменить все цифры соответствующими словами.
  72. В данном тексте найдите  первую подстроку максимальной длины, которая не содержит букв.
  73. Дан текст. Заменить все вхождения наибольшей цифры ее словесным написание.
  74. Дан текст, имеющий вид x_1+x_2+...+x_n, где x_i - цифра или двузначное число. Найдите значение выражения.
  75. Дан текст, имеющий вид x_1-x_2+x_3-x_4+..., где x_i - цифра или двузначное число. Найдите значение выражения.
  76. Дана строка. Придумать алгоритм шифрования данной строки и дешифрования.
  77. Даны две строки, состоящие из слов, разделенных пробелами. Сформировать строку, состоящую из слов, которые: а) встречаются хотя бы в одной строке; б) встречаются только в первой строке; в) встречаются только в одной из строк.
  78. Дана строка, состоящая из слов, разделенных пробелами. Сформировать новую строку со следующими свойствами: а) все слова в нижнем регистре, кроме первой буквы первого слова; б) все ссылки в словах заменяются на "[ссылка запрещена]"; в) все email заменяются на "[контакты запрещены]"; г) все слова длины более 3 символов, содержащие только цифры, удаляются.
  79. В сообщении, состоящем из одних русских букв и пробелов, каждую букву заменили ее порядковым номером в русском алфавите (А — 1, Б — 2, ..., Я — 33), а пробел — нулем. Требуется по заданной последовательности цифр найти количество исходных сообщений, из которых она могла получиться. Материал сайта www.itmathrepetitor.ru
  80. Непустая строка, содержащая некоторое слово, называется палиндромом, если это слово одинаково читается как слева направо, так и справа налево. Пусть дана строка, в которой записано слово s, состоящее из n прописных букв латинского алфавита. Вычеркиванием из этого слова некоторого набора символов можно получить строку, которая будет палиндромом. Требуется найти количество способов вычеркивания из данного слова некоторого (возможно, пустого) набора таких символов, что полученная в результате строка является палиндромом. Способы, различающиеся только порядком вычеркивания символов, считаются одинаковыми.
  81. Даны две строки s и w, вывести строку х максимальной длины, состоящую из букв, таких, что существует перестановка х, являющаяся подстрокой перестановки s и одновременно являющаяся подстрокой перестановки w.
  82. Исключить из строки группы символов, расположенные между символами «/*», «*/» включая границы . Предполагается, что нет вложенных скобок.
  83. Если заданный текст является правильной записью римскими цифрами целого числа от 1 до 1999, то получить это число.
  84. Заданное натуральное число от 1 до 1999 вывести римскими цифрами.
  85. Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно два раза (в том порядке, как они встречаются в тексте).
  86. Проверить, соблюдается ли в заданном тексте баланс открывающих и закрывающих круглых скобок, то есть можно ли установить взаимно однозначное соответствие открывающих и закрывающих скобок, причем открывающая скобка всегда предшествует соответствующей закрывающей.
  87. Для встречающихся в заданном тексте пар рядом расположенных символов указать, сколько раз встречается в тексте каждое из таких двухбуквенных сочетаний.
  88. Определить является ли введенный текст записью целого числа, записью вещественного числа.
  89. Написать программу получения строки, в которой удалены все «лишние» пробелы, то есть из нескольких подряд идущих пробелов оставить только один.
  90. Написать программу, которая осуществляет сравнение двух строк.
  91. Найти самое длинное симметричное слово заданного предложения.
  92. Написать программу, реализующую процедуру удаления k символов с позиции номер n из строки S.
  93. Написать программу, реализующую процедуру конкатенации k строк.
  94. Дана строка, содержащая текст и арифметические выражения вида: a + b , a – b , a * b и a / b, где a, b - числа. Выписать из нее все арифметические выражения и вычислить их значения.
  95. Написать программу, которая преобразует введенное число (целое или вещественное) в соответствующую строку символов.
  96. Вывести слова строки, начинающиеся и заканчивающиеся одной и той же буквой; которые содержат ровно три буквы «k».
  97. Вывести слова, в которых нет повторяющихся букв; буквы упорядочены по алфавиту; с длиной, максимальной в этой строке.
  98. Вывести слово, наиболее часто встречающееся в строке; последовательность слов, в которых буквы упорядочены по алфавиту.
  99. Перечислить все слова заданного предложения, которые состоят из тех же букв, что и первое слово предложения.

  100. В заданном предложении найти пару слов, из которых одно является обращением другого (обращение – слово, получающееся из исходного записью его букв в обратном порядке).
  101. Дан английский текст из комбинаций цифр и английских букв, разделенных знаками препинания. Под словами будем понимать последовательности английских букв, ограниченные знаками препинания. Необходимо найти количество слов, у которых гласные буквы (a, e, i, o, u, y) чередуются с согласными (такие слова состоят минимум из двух букв). Регистр не учитывать.
  102. Расстояние между двумя словами равной длины – количество букв, в которых различаются эти слова. В заданном предложении найти пару наиболее далеко удаленных слов заданной длины.
  103. В предложении все слова начинаются с различных букв. Напечатать (если можно) слова предложения в таком порядке, чтобы последняя буква каждого слова совпадала с первой буквой следующего слова.
  104. Определить самое длинное общее слово двух заданных предложений.
  105. Даны три предложения. Определить самое длинное из слов первого предложения, которое есть во втором и третьем предложении.
  106. Отредактировать заданное предложение, удаляя из него слова, которые встречаются в предложении n раз.
  107. Некоторые числа можно получить так: взять единицу, а затем либо умножать результат на 3, либо прибавлять к результату 5. Например, число 24 получается как (((1*3)+5)*3). Написать функцию, которая для данного числа создает строку с таким выражением.
  108. Переставить и вывести на экран слова заданного предложения в соответствии с ростом доли согласных в этих словах. Материал сайта www.itmathrepetitor.ru
  109. Дан некоторый текст. Изменить текст следующим образом: если после буквы «р», которая является не предпоследней в слове, напечатана буква «а», то заменить ее на букву «о».
  110. Даны два текста. Придумать численную характеристику, показывающую насколько близки данные предложения по смыслу и написанию. Проверить эту характеристику на следующей задаче. Имеется несколько различных текстов. Необходимо определить, добавить ли к ним еще один. Новый текст стоит добавлять только, если он достаточно отличен от уже имеющихся.
  111. Даны два текста. Первый соответствует содержанию номера газеты. Второй соответствует содержанию записки о выкупе, слова в которой целиком вырезаны из газеты. Определите, можно ли составить записку о выкупе с помощью газеты, текст которой дан.
  112. Даны n строк, содержащие названия видов автомобилей без повторений. На парковке свободно m последовательных мест. Найдите все возможные варианты разместить на них автомобили (количество автомобилей каждого вида не менее m).
  113. Дана строка, которое содержит квадратное уравнение, состоящая из цифр, символа умножения '*', символа 'x' неизвестной, символов '+', '-', '='. Найдите корни данного уравнения.
  114. Реализуйте метод, осуществляющий сжатие строки на основе счетчика повторяющихся символов. Например, строка aaabbcccc должна превратиться в a3b2c5. Если сжатая строка оказалась длиннее исходной, то результатом работы алгоритма должна быть исходная строка. Решить задачу с предположением, что в исходной строке нет цифр. Решить задачи для произвольной строки.
  115. Даны две строки. Можно ли первую строку получить из второй циклическим сдвигом?
  116. Даны строки, в каждой из которых содержится сначала натуральное число, а затем некоторое слово. Выполнить сортировку строк по числу, а строки с одинаковыми числами упорядочить по слову.
  117. Дана строка, содержащая сумму натуральных чисел. Найдите результат вычислений.
  118. В заданном списке слов найдите самое длинное слово, образованное другими словами, входящими в список. Например, для слов dog, cat, mouse, dogcat, mouseandcat ответом является слово dogcat.
  119. Для двух слов одинаковой длины напишите метод, трансформирующий одно слово в другое. изменяя одну букву за один шаг. Каждое новое слово должно присутствовать в словаре, то есть в заданном списке допустимых слов. Например, для слов dump и like можно построить такую цепочку действий: dump, lamp, limp, lime, like. Слова lamp, limp, lime есть в словаре.
  120. Даны слова из букв и цифр, записанные в столбик, который выровнен  по первой букве. Определите, существует ли прямоугольник из символов этого столбика, граница которого состоит из цифр.
  121. Дан текст. Определите частоту (отношение между количеством вхождений и общим количеством троек) триграмм (троек символов). Статистика должна определяться отдельно для русского и английского алфавита. В алфавиты необходимо добавить псевдосимвол, означающий любой пробельный символ (пробел, запятая, точка и так далее). При подсчете статистики последовательность пробельных символов считать одним пробельным символом. Регистр не учитывать.
  122. К вам попал зашифрованный текст, означающий большую истину для многих программистов. Расшифруйте его, то есть предложите способ восстановления исходного текста и найдите этот текст. vujgvmCfb tj ufscfu ouib z/vhm jdjuFyqm jt fscfuu uibo jdju/jnqm fTjnqm tj scfuuf ibou fy/dpnqm yDpnqmf jt cfuufs boui dbufe/dpnqmj uGmb tj fuufsc ouib oftufe/ bstfTq jt uufscf uibo otf/ef uzSfbebcjmj vout/dp djbmTqf dbtft (ubsfo djbmtqf hifopv up csfbl ifu t/svmf ipvhiBmu zqsbdujdbmju fbutc uz/qvsj Fsspst tipvme wfsof qbtt foumz/tjm omfttV mjdjumzfyq odfe/tjmf Jo fui dfgb pg hvjuz-bncj gvtfsf fui ubujpoufnq up ftt/hv Uifsf vmetip fc pof.. boe sbcmzqsfgf zpom pof pvt..pcwj xbz pu pe ju/ Bmuipvhi uibu bzx bzn puo cf wjpvtpc bu jstug ttvomf sfzpv( i/Evud xOp tj scfuuf ibou /ofwfs uipvhiBm fsofw jt fopgu cfuufs boui iu++sjh x/op gJ ifu nfoubujpojnqmf tj eibs pu mbjo-fyq tju( b bec /jefb Jg fui foubujpojnqmfn jt fbtz up bjo-fyqm ju znb cf b hppe jefb/ bnftqbdftO bsf pof ipoljoh sfbuh efbj .. fu(tm pe psfn gp tf"uip
  123. Шифр "Перевернутые группы". Дан текст. Осуществить шифрование и дешифрование следующим образом: текст разбивается на группы из k элементов, в каждой группе символы переставляются некоторым образом (например, записываются в обратном порядке), далее переставляются сами группы символов.
  124. Шифр "Вставка в середину". Дан текст. Осуществить шифрование и дешифрование следующим образом: текст разбивается на группы из четного количества элементов, в каждой группе символы переставляются некоторым образом (например, записываются в обратном порядке) и в середину добавляются n случайных символов, далее переставляются сами группы символов.
  125. Шифр "Сэндвич".  Дан текст. Осуществить шифрование и дешифрование следующим образом: текст разбивается на две одинаковых по количеству символов части и результатом шифрования является строка, в которой символы из первой части чередуются символами из второй части.
  126. Способ кодирования сообщений заключается в следующем: каждой букве русского алфавита мы ставим в соответствие последовательность из 0 и 1 длины 6, которая есть запись в двоичной системе счисления порядкового номера буквы русского алфавита. Если двоичная запись содержит меньше 6 нулей и единиц, то мы дописываем слева нули, чтобы получилась последовательность длины 6. Например, буква «Я» имеет порядковый номер 33. Это число в двоичной системе счисления равно 100001. Буква «Г» имеет порядковый номер 4, в двоичной системе счисления это 100. Теперь дописываем слева нулями до 6 цифр, получаем последовательность 000100, которая будет соответствовать букве «Г». Пробел между словами кодируется последовательностью 000000. Дальше делаем следующее: делим буквы на пары (с начала сообщения), каждую букву сообщения по указанному правилу переводим в последовательность 0 и 1, получаем двоичные числа (из 12 цифр), соответствующие каждой паре. Переводим эти числа в десятичную запись. Полученная последовательность десятичных чисел будет представлять из себя зашифрованное послание. Зашифруйте таким способом слово «СЕРВЕР». Ответ должен содержать три десятичных числа (первое – для пары букв СЕ, второе – для РВ, третье – для ЕР). Материал сайта www.itmathrepetitor.ru
  127. Определите ключ шифра сдвига, которым зашифровано одно из, возможно самых знаменитых, изречений Гая Юлия Цезаря: MVEZ MZUZ MZTZ Ответ представьте в виде целого числа.
  128. Зашифрованный стих. Каждая буква фрагмента сказки А.С. Пушкина заменена некоторой буквой так, что разным буквам соответствуют разные буквы, а одинаковым — одинаковые. Пробелы и знаки препинания сохранены. Найдите цепочку букв, в которую преобразуется слово ОЛИМПИАДА при той же самой замене.

    Бтсвбр ел ибвн анжмс,
    Гвлъ ел бтсвбрн тсбмс
    Т залсбгалрыим цнвкрлим,
    Т снвнилим ъл тлълим;
    Наь влтснс пнвнъ ърбвцби,
    Л пбъ енй хвутслаьеый ъби;
    Онакл сли жмрнс вучелд,
    Ъл злснйемцл клклд!
    Онакл пнтнекм пбнс
    Ъл бвншкм ртн гвызнс,
    Л бвншкм ен пвбтсын,
    Ртн ткбваупкм збабсын

  129. Диск Альберти. Для зашифрования текста использовался вращающийся диск, центр которого находится на оси, закрепленной на неподвижном основании. Диск разделен на 32 равных сектора, в которые в неизвестном порядке вписаны все буквы русского алфавита (по одной в каждый сектор; буквы Е и Ё не различаются). На основании, по одной напротив каждого сектора, выписаны буквы в алфавитном порядке по часовой стрелке. Каждое положение диска, получающееся из исходного поворотом на угол, кратный величине сектора, задает соответствие между буквами на основании и на диске. При зашифровании очередной буквы текста ее заменяли соответствующей ей буквой при текущем положении диска, после чего диск поворачивался на один сектор по часовой стрелке. Укажите, какой из фрагментов полученного шифртекста

    У Ш Ц Ш М Ь Г Р У Н В И О Ь Х Ь З Ж И Х С Ж

    Ы Р О Р Л Й Я О Ш К Ь Э З Д О Е

    может соответствовать слову ШИФРАТОР в исходном тексте:

    В И О Ь Х Ь З Ж

    У Ш Ц Ш М Ь Г Р

    О Ш К Ь Э З Д О

    Ж Ы Р О Р Л Й Я

    О Р Л Й Я О Ш К

  130. Способ кодирования сообщений заключается в следующем: каждой букве русского алфавита мы ставим в соответствие последовательность из 0 и 1 длины 6, которая есть запись в двоичной системе счисления порядкового номера буквы русского алфавита. Если двоичная запись содержит меньше 6 нулей и единиц, то мы дописываем слева нули, чтобы получилась последовательность длины 6. Например, буква «Я» имеет порядковый номер 33. Это число в двоичной системе счисления равно 100001. Буква «Г» имеет порядковый номер 4, в двоичной системе счисления это 100. Теперь дописываем слева нулями до 6 цифр, получаем последовательность 000100, которая будет соответствовать букве «Г». Пробел между словами кодируется последовательностью 000000. Дальше делаем следующее: делим буквы на пары (с начала сообщения), каждую букву сообщения по указанному правилу переводим в последовательность 0 и 1, получаем двоичные числа (из 12 цифр), соответствующие каждой паре. Переводим эти числа в десятичную запись. Полученная последовательность десятичных чисел будет представлять из себя зашифрованное послание. Зашифруйте таким способом слово «СЕРВЕР». Ответ должен содержать три десятичных числа (первое – для пары букв СЕ, второе – для РВ, третье – для ЕР). Зашифруйте произвольное сообщение.
  131. Дан массив названий переменных в camelCase. Преобразовать названия в snake_case.

Добавить комментарий