Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C++で偶数カウントの母音を含む最長の部分文字列を検索します


文字列sがあるとすると、各母音を含む最長の部分文字列のサイズを偶数回見つける必要があります。つまり、「a」、「e」、「i」、「o」、および「u」は偶数回出現する必要があります。したがって、文字列が「helloworld」のような場合、出力は8になります。

これを解決するには、次の手順に従います-

  • ret:=0、2つのマップmとcntを定義し、m [“ 00000”]:=-1

    を設定します。
  • 母音を母音配列に格納する

  • 0からsのサイズまでの範囲のiの場合

    • x:=s [i]、およびok:=false

    • cnt [x]を1増やし、temp:=空の文字列を設定します

    • 0〜4の範囲のkの場合:temp:=temp + ‘0’ + cnt [vowels [k]] mod 2

    • mにtempがある場合、ret:=retとiの最大値– m [temp]、それ以外の場合、m [temp]:=i

  • retを返す

例(C ++)

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int findTheLongestSubstring(string s) {
      int ret = 0;
      map <string, int> m;
      map <char, int> cnt;
      m["00000"] = -1;
      char vowels[5] = {'a', 'e', 'i', 'o', 'u'};
      for(int i = 0; i < s.size(); i++){
         char x = s[i];
         bool ok = false;
         cnt[x]++;
         string temp = "";
         for(int k = 0; k < 5; k++){
            temp+= ('0' + (cnt[vowels[k]] % 2));
         }
         if(m.count(temp)){
            ret = max(ret, i - m[temp]);
         }
         else{
            m[temp] = i;
         }
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.findTheLongestSubstring("helloworld"));
}

入力

“helloworld”

出力

8

  1. C++を使用して数字の合計が偶数の数を見つける

    完全に2で割ることができる整数は偶数です。したがって、この記事では番号nが与えられており、数字の合計が偶数のn番目の番号を見つける必要があります。数字の合計が偶数の最初の5つの数字は、2、4、6、8、および11です。たとえば、- Input : n = 5 Output : 11 Explanation : First 5 numbers with even sum of digits are 2, 4, 6, 8, 11 i.e 5th number is 11. Input : 12 Output : 24 解決策を見つけるためのアプローチ これで、特定の問題の解決策を見つけるための2

  2. C++を使用してN番目の偶数の長さの回文を検索します

    C + +を使用したことがある場合は、回文数について聞いたことがあるはずです。したがって、このガイドでは、適切な例を使用して、「N番目の偶数長の回文」に関するすべてを説明します。回文数は、それらを逆にした後も同じままである数です。数字だけでなく、文字を逆にしてもスペルが変わらない単語。例- 数字={1,121,131,656,1221,1551} 言葉={saas、malayalam、level、mom} 複雑に見えますが、どのシステムでも非常に簡単に実行できます。それでは、回文について簡単に説明しましょう。 N番目の偶数の長さの回文数 11,22,33,44,55,66,77,88