如何在字符串中找到对称的单词?

How to find symmetrical words in string?

一段时间以来,我一直在努力使这项工作奏效。 我需要为学校项目制作一个程序,它接受一个字符串并计算其中的对称单词。

里面应该有句子,但有什么帮助。无论我尝试哪种方法,我似乎都无法让它发挥作用。你能帮帮我吗?

编辑:我当前的代码

program rocnik;
var text:string;
    word,drow:string[10];
    i,j,k,p1:integer;
    space,sym:boolean;

begin
     p1:=0;
     write('Enter text: ');readln(text);
     if text<>'' then
     begin
          for i:=1 to length(text) do
          begin
               k:=0;
               if space then
               begin
                    j:=0;
                    space:=false;
               end;
               sym:=true;
               if text[i]<>' ' then
               begin
                    j:=j+1;
                    word[j]:=text[i];
               end
               else space:=true;
               if space then
               begin
                    space:=false;
                    for j:=1 to length(word) do
                    begin
                         k:=k+1;
                         drow[k]:=word[j];
                         if drow[k]<>word[j] then sym:=false;
                    end;
               end;
               if space and sym then p1:=p1+1;
          end;
     end
     else writeln('You didnt enter any text');
     writeln('there are ',p1,' symmetrical words in text');
     readln;
end.

你尝试一次完成所有事情!编程通常是将一个大问题分解为多个更简单的问题的练习。

你真的只需要检查每个单词末尾的对称单词。我建议有一个代表当前单词的字符串。当您遇到输入中的每个字符时,看看它是否是 space。如果它不是 space,则将该字符附加到 currentWord 字符串变量。

每次遇到space,你应该检查currentWord是否对称,然后清除currentWord变量。

您的代码尝试单独跟踪单词的长度。这是在寻找错误。您可以使用 length 函数询问字符串的当前长度。

所以你的代码应该归结为:

请注意,这是伪 Pascal - 我尽量不给你复制粘贴的答案,这样你就可以学习了

currentWord := ''
for each character do
begin
    if this character is not a space then
        add the character to the currentWord
    else
        if wordIsSymmetrical(currentWord) then
            print word or add to count as needed
        end
        currentWord := ''
    end
end
if currentWord <> '' then
    if wordIsSymmetrical(currentWord) then
        print word or add to count as needed
    end
end

...并添加一个名为 wordIsSymmetrical 的函数,它只检查我们传递给它的字符串参数。

请注意,最后你可能有一个词没有遇到space。在这里你可以再次使用 wordIsSymmetrical 检查 .

这似乎更容易做到吗?