Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 514750

Палендром - PascalABC.NET

$
0
0
Задача: найти максимальной длины палендром.
Решение:
:

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 минуты
Хотя, более красиво вот так:
:

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 вырвиглазно было.

Viewing all articles
Browse latest Browse all 514750

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>