Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2012, 14:22   #1
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию Варианты решений

Здравствуйте, недавно попалась такая задачка...

Дана строка такого вида: <aa>...</aa>...
под знаком ... понимается что там может быть несколько таких строк или их отсутствие. В этой строке изменен 1 символ таком образом что данная последовательность тегов стала неверной. Например: <abc><a></a></ab/>
Нужно восстановить эту строку до нормального состояния. длина строки от 7 до 1000 символов.

Один из вариантов решения состоит в том, чтобы по ходу прохождения по строке, заменять в ней читаемый символ на один из символов алфавита или "<", ">", "/"... и проверять стала ли данная строка верной. Меня интересует, есть ли другое решение?
Я только смог поиском неправильных скобок ("<</", "><>"....) и заменой их на нужные решить данную задачку, но найти и заменить буквы я не смог.
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Старый 22.01.2012, 14:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Закрывающий тег обязателен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.01.2012, 15:19   #3
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию

да обязателен
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Старый 22.01.2012, 16:18   #4
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Ну я думаю так. Сначала проверяешь, одинаково ли количество символов "<" и ">", если нет, то ищешь, когда после ">" появляется ">" и наоборот. Потом проверяешь, что-бы небыло третьего ">" ("<"), если есть меняешь стредний, нет - подбором подставляешь нужный символ в найденый промежуток.

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

Последний раз редактировалось whatever; 22.01.2012 в 16:21.
whatever вне форума Ответить с цитированием
Старый 22.01.2012, 21:09   #5
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию

Цитата:
подбором подставляешь нужный символ в найденый промежуток.
Не совсем понял как это?
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Старый 22.01.2012, 21:42   #6
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от Ghost of Night Посмотреть сообщение
... и проверять стала ли данная строка верной.
Из этой фразы я сделал вывод, что у тебя есть некоторый алгоритм проверки правильности строки.

Цитата:
Сообщение от Ghost of Night Посмотреть сообщение
Один из вариантов решения состоит в том, чтобы по ходу прохождения по строке, заменять в ней читаемый символ на один из символов алфавита или "<", ">", "/"
То же самое, только вместо прохождения всей строки проходишь уже найденый промежуток от "<" до "<", либо от ">" до ">"

Кстати, было бы проще, если бы ты указал язык. Тэги то понятно, что из html, но врядли описаные тобой (да и мной тоже) действия можно проводить по средствам языка разметки гипертекста.
Все тривиальное просто

Последний раз редактировалось whatever; 22.01.2012 в 21:59.
whatever вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ВАРИАНТЫ ПАРСИНГА Vova777 Общие вопросы Delphi 2 04.09.2010 23:51
Варианты решения задачи. Cave_IAR Общие вопросы C/C++ 5 16.08.2010 16:45
подскажите варианты решения leozay Microsoft Office Excel 10 26.08.2009 21:24
Варианты курсора(Delphi) IGoDoVaN Помощь студентам 25 18.02.2009 21:48