![]() |
|
#1
|
|||
|
|||
![]() Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран самую короткую группу.
|
#2
|
|||
|
|||
![]() Код:
s:string; \\твоя строка curnum:byte; \\ длина текущей последовательности str:=s[0]; \\определяем первый символ - он же начало последовательности; mins:=s[0]; \\собственно, символы последовательности maxl:=length(s); \\ предположим, что последовательность ОДНА, то есть все символы одинаковые; curnum:=1; For i:=1 to length(s)-1 do begin if s[i]=str then inc(curnum) \\если символ тот же, что и остальные, увеличиваем длину цепочки else begin if curnum<maxl then maxl:=curnum; \\если длина цепочки меньше, то заменяем значение mins:=s[i-1]; \\не забываем указать символ этой последовательности str:=s[i]; \\определяем символы новой последовательности end; end; if curnum<maxl then begin maxl:=curnum; mins:=s[i-1]; end; \\проверяем последнюю цепочку (тут немного г****код получился) for i:=1 to maxl do Write(mins); \\выводим самую маленькую цепочку Стоит отметить, что он не будет выводить 2 цепочки, если имеются две самые маленькие последовательности, причем, из разных символов. |
Этот пользователь сказал Спасибо PS11011010 за это полезное сообщение: | ||
izziq (25.04.2012)
|