我需要多次使用一个字符串变量来检查工作是否是回文。我正在使用此代码:
var
s:string;
back:string;
x,n:integer;
d:array[1..n] of string;
begin
read(n);
for i:=1 to n do begin
readln(s);
s:= Lowercase(s);
for x:=length(s) downto 1 do begin
back:=back + s[x];
if back=s then begin
writeln('It's a palindrome');
end;
但是如果我的n高于1,变量'back'将与第一个循环相同,因此它不会再找到回文。我知道,对于数字零是中性的,这就是我如何重置它,但我不知道字符串。如果我使用
back:=' ';
单词也不会是回文因为我猜的空间,它只是不适用于此。
答案 0 :(得分:0)
back := '';
但你可以用其他方式检查回文:
len := length(x);
is_palindrome := true;
for x := 1 to len do begin
if s[x] <> s[len - x + 1]
then is_palindrome := false; break; end;
end;
if is_palindrome
then begin
writeln('It''s a palindrome');
end
else begin
writeln('It''s not a palindrome');
end;
答案 1 :(得分:0)
从你的评论中我认为易用性是一个标准。如果您碰巧使用Free Pascal,请轻松尝试
uses StrUtils;
if ReverseString(s)=s then
writeln('It''s a palindrome')
else
writeln('It''s not a palindrome');