我已經編程檢查單詞是否爲palindrom。我已經在Java中完成了這幾十次,但在這裏isPalindrom
函數i
永不增加,並返回false
。我的程序有什麼問題?檢查Pascal中的單詞是否爲迴文
program p1;
var
n,i:integer;
slowo:string;
function isPalindrom(s: string) : boolean;
var
dlugosc : integer;
begin
dlugosc := Length(s);
for i:= 1 to dlugosc do
begin
writeln(i); writeln('i = ', i, ' s[i] = ', s[i], 'dlugosc - i = ', dlugosc - i, 's[dlugosc - i] = ', s[dlugosc - i + 1]);
if s[i] <> s[dlugosc - i] then
begin
exit(false);
end;
end;
writeln('-------');
exit(true);
end;
begin
readln(slowo);
if isPalindrom(slowo) = TRUE then
begin
writeln('is PALINDROM');
end;
if isPalindrom(slowo) = FALSE then
begin
writeln('is not PALINDROM');
end;
readln;
end.
您打印'的[dlugosc - 我] =',S [dlugosc - 我+ 1]);'但檢查'S [dlugosc - 我]'把它改成'[dlugosc - i +1]' – Grundy
你的'for'循環太長了:應該是'for i:= 1 to dlugosc div 2'。換句話說,你只需要比較字符串的前半部分和後半部分。如果'slowo'的值是'hannah',那麼你只需要比較前三個字母。 –