{$WRITEABLECONST ON}

const

  WithAccents:   String = 'àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ';

  WithNoAccents: String = 'aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN';

{$WRITEABLECONST OFF}

 

function ReplaceAccents(const s: string): string;

var

  i: integer;

begin

  Result := StringReplace(s, #32, EmptyStr, [rfReplaceAll]);

  for i := 1 to Length(LowerAccents) do

    Result :=

      StringReplace(Result, WithAccents[i], WithNoAccents[i],
[rfReplaceAll]);

end;

 

function IsPalindrome(const s: string): boolean;

var

  lIdx: integer;

  lParse: string;

begin

  Result := true;

  lParse := AnsiUpperCase(ReplaceAccents(lParse));

  for iIdx := 1 to Length(lParse) div 2 do

    if not (lParse[iIdx] = lParse[Length(lParse) - (iIdx - 1)]) then

    begin

      Result := False;

      Break;

    end;

end;

 

Em tempo: um palíndromo é um número ou valor literal que ao ser lido em
sentido contrário (direita para esquerda) tem o mesmo valor se for lido no
sentido normal (esquerda para direita).

 

 

Rubem Nascimento da Rocha

Analista/Desenvolvedor Pleno

Digital Training - Seção de CA

* E-Mail: rubem.ro...@dtmanaus.com.br

þ  Site: http://www.dtmanaus.com.br <http://www.dtmanaus.com.br/> 

 



[As partes desta mensagem que não continham texto foram removidas]

Responder a