Param42. Описать функцию CompressStr($$S$$) строкового типа, выполняющую сжатие строки $$S$$ по следующему правилу: каждая подстрока строки $$S$$, состоящая из более чем четырех одинаковых символов $$C$$, заменяется текстом вида «С{K}», где $$K$$ — количество символов $$C$$ (предполагается, что строка $$S$$ не содержит фигурных скобок «{» и «}»). Например, для строки $$S$$=«bbbccccce» функция вернет строку «bbbc{5}e». С помощью функции CompressStr сжать пять данных строк.
Решение:
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 38 39 40 41 42 43 |
program Param41; type St=String; var S:St; i:integer; function CompressStr(S:St):St; var i,i2,Num:integer; Stemp:String; C:Char; begin C:=S[1]; Num:=1; Result:=''; For i:=2 to length(S) do begin if S[i]=C then inc(num); if (S[i]<>C) or (i=length(S)) then begin if num>3 then begin Str(num,Stemp); Result:=Result+C+'{'+Stemp+'}'; end else for i2:=1 to num do Result:=Result+C; C:=S[i]; Num:=1; end; end; end; begin for i:=1 to 5 do begin Write('S:'); Readln(S); Writeln(CompressStr(S)); end; end. |
Другие задачи из раздела Param можно посмотреть здесь.
Комментарии: