Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Найти в строке палиндром максимальной длины

05.09.2017, 14:17. Показов 3257. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: найти максимальной длины палендром.
Решение:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var
  Str: string;
  Found: boolean;
 
function IsEqual(s: string): boolean;
begin
  Result := true;
  for var i := 1 to s.Length div 2 do
    if s[i] <> s[s.Length - i + 1] then begin Result := false;break end;
end;
 
begin
  Readln(Str);
  var Length2 := Str.Length;
  
  Found := false;
  while not Found and (Length2 > 0) do
  begin
    var str2 := '';
    for var i := 1 to Str.Length - Length2 + 1 do
    begin
      for var j := i to i + Length2 - 1 do
        str2 += Str[j];
      if IsEqual(str2) then
      begin
        Found := true;
        WritelnFormat('Найден максимально длинный палендром {0}.', str2);
      end;
      str2 := ''
    end;
    Dec(Length2);
  end;
  
  if not Found then Writeln('Не найден максимально длинный палендром.');
  
  Readln();
end.
Правильная логика мышления ?

Добавлено через 4 минуты
Хотя, более красиво вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
function IsEqual(s: string): boolean;
begin
  Result := true;
  var j := s.Length div 2;
  var i := 1;
  while Result and (i <= j) do
  begin
    if s[i] <> s[s.Length - i + 1] then Result := false;
    Inc(i);
  end;
end;
С break вырвиглазно было.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.09.2017, 14:17
Ответы с готовыми решениями:

Найти в строке s и вывести в файл ‘output.txt’ слово максимальной длины
Помогите пожалуйста. Если не сложно, можно описать вкратце как вы действовали :) Считать из файла ‘input.txt’ строку s. Найти в строке s...

Найти в строке палиндром максимальной длины
Ограничение по времени: 1 секунда Ограничение по памяти: 64 мегабайта Как вы помните, месклениты отправились в экспедицию. Однажды...

Найти палиндром максимальной длины.
Вариант 7(к.р) 1. Описание функции в Турбо Паскале. 2. Понятие перечисляемого и интервального типов данных. 3. Задача. Дана матрица...

8
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
05.09.2017, 14:23
Не
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
палендром
а палиндром.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
05.09.2017, 14:29  [ТС]
Сорян
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,882
Записей в блоге: 12
05.09.2017, 16:06
Лучший ответ Сообщение было отмечено Volobuev Ilya как решение

Решение



Pascal
1
2
3
4
begin
  var s := 'ЛЯЛЯ8АРГЕНТИНАМАНИТНЕГРА87';
  writeln(Regex.Matches(s, '(?<N>.)+.?(?<-N>\k<N>)+(?(N)(?!))').Cast&<Match>().OrderBy(v -> v.Value.Length).Last);
end.
1
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
05.09.2017, 16:37  [ТС]
Это что:
Pascal
1
Cast&<Match>
?

Добавлено через 4 минуты
Можно выражение регулярное прокоментировать?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,882
Записей в блоге: 12
05.09.2017, 16:58
Лучший ответ Сообщение было отмечено Volobuev Ilya как решение

Решение

Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Это что
Это приведение результатов Matches к такому виду, чтобы с ними можно было работать средствами Linq.
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Можно выражение регулярное прокоментировать?
см. здесь: Fun With .NET Regex Balancing Groups
1
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8646 / 4481 / 1669
Регистрация: 01.02.2015
Сообщений: 13,889
Записей в блоге: 11
05.09.2017, 17:55
Если задача на алгоритмы, а не на изучение языка, то можно решать с применением алгоритма Манакера.
1
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
05.09.2017, 19:14  [ТС]
На алгоритмы.

Добавлено через 7 минут
https://tproger.ru/problems/lo... substring/
Можете пояснить эти строчки?
То есть предположим, что на данный момент мы стоим в i-ом символе строки. Теперь заведем две переменных left и right, изначально left = i - 1 и right = i + 1 для палиндромов нечетной длины и i - 1, i соответственно для палиндромов четной длины.
Выделил жирным то, что не понятно.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,882
Записей в блоге: 12
05.09.2017, 19:21
Лучший ответ Сообщение было отмечено Volobuev Ilya как решение

Решение

Подразумевалось:
Теперь заведем две переменных left и right, изначально left = i - 1 и right = i + 1 для палиндромов нечетной длины и left = i - 1, right = i для палиндромов четной длины
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.09.2017, 19:21
Помогаю со студенческими работами здесь

Палиндром максимальной длины
Кролик Роджер очень любит играть. Особенно он любит играть палиндромом. Он так забавився палиндромом, что нечаянно уронил ... Беда, потому...

Найти в строке подстроку максимальной длины
Найти в строке подстроку максимальной длины, состоящей из одного символа.

Найти в строке слово максимальной длины
Написать программу , с помощью которой в предложении , состоящем из букв и цифр , найти слово ( состоящие из цифр) максимальной длинны....

Найти в строке слово-перевертыш максимальной длины
Дана строка в виде предложения. Найти в ней слово-перевертыш максимальной длинны. Словом будем считать набор символов, отделенных с двух...

Найти в функции в строке слово максимальной длины
Ввести строку. Найти в функции в ней слово максимальной длины.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru