ホームページ >バックエンド開発 >C++ >C プログラムで、文内の最長の回文単語を出力します。

C プログラムで、文内の最長の回文単語を出力します。

WBOY
WBOY転載
2023-09-04 22:57:07796ブラウズ

C プログラムで、文内の最長の回文単語を出力します。

给定一个句子,挑战是从给定的句子中找到最长的回文

什么是回文?

回文是一个单词或序列,即使在之后其含义仍然保持不变反转字符串

示例 - Nitin,反转字符串后其含义保持不变。

挑战是从给定的句子中找到最长的回文。

喜欢的句子是:malayalam liemadameil iji

它包含三个回文词,但最长的是 - liemadameil

算法

START
STEP 1 -> Declare start variables I, j, k, l, max to 0, index to -1, check to 0, count to 0
Step 2 -> Loop For i to 0 and i<strlen(str) and i++
   Set max =0, k =i and j=i+1
   Loop While str[j]!=&#39; &#39; and str[j]!=&#39;\0&#39;
      Increment j by 1
   End While
   Set l=j-1
   IF str[k]!=&#39; &#39; and str[k]!=&#39;\0&#39;
      Loop While k<=1
      If str[k]==str[l]
         Increment max by 1
         If count<=max
            Set index=i and count = max
         End If
      End IF
      Else
         Set max = 0, count = -1
         Break
      End Else
      Increment k and I by 1
   End Loop While
End If
Set i=j
Step 3 -> End Loop For
Step 4 -> Loop For i = index and i!=-1 && str[i]!=&#39; &#39; && str[i]!=&#39;\0&#39; and i++
   Print str[i]
Step 5 -> End Loop For
STOP

示例

#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[]) {
   char str[] = {"malayalam liemadameil iji"};
   int i, k, l, j, max =0, index = -1, check = 0, count = 0;
   for(i=0; i<strlen(str); i++) {
      max = 0;
      k = i;
      j = i+1;
      while(str[j]!=&#39; &#39; && str[j]!=&#39;\0&#39;){
         j++;
      }
      l = j-1;
      if(str[k]!=&#39; &#39; && str[k]!=&#39;\0&#39;) {
         while(k<=l) {
            if (str[k]==str[l]) {
               max++;
               if(count<=max) {
                  index = i;
                  count = max;
               }
            } else {
               max = 0;
               count = -1;
               break;
            }
            k++;
            l--;
         }
      }
      i = j;
   }
   for (i = index; i!=-1 && str[i]!=&#39; &#39; && str[i]!=&#39;\0&#39;; i++) {
      printf("%c", str[i]);
   }
   return 0;
}

输出

如果我们运行上面的程序,它将生成以下输出。

liemadameil

以上がC プログラムで、文内の最長の回文単語を出力します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。