2017-01-30 14 views
-2

私はC++の初心者ですから、入力する文字列の中で最長の一連の文字を見つけることができなくてはなりませんユーザーは、どうすればいいのですか、何時間もコードを入力しようとしていて、何も私のために働いていませんでした。 のため申し訳ありませんが、私の悪い英語C++の文字列の中で最長の文字列を数えます

例:「** .... ***** ......」(文字列入力) が、私はそう「*」 の最長のシリーズを見つける必要があり 入力は、だから私は、あなたが「AAA」のように同じ文字(のシリーズを見つけようとしていると仮定5 問題(「F」で「S」とフィニッシュの間だけで文字をカウントする必要があります)

int cnt=0,cnt1=0,cnt2=0; 
string s; 
cin>>s; 
for(int j=0;j<s.length();j++){ 
    if(s[j]=='S') 
     cnt1++; 

    if(s[j]=='F') 
     break; 
    while(true) { 
     if(s[j]=='*'&&cnt1==1) 
      cnt++; 
     if(cnt>cnt2) 
      cnt2=cnt; 
     if(s[j]=='F') 
      break; 
    } 
    cnt=0; 
} 
cout<<cnt2<<endl; 
+0

が動作し、そうでない方法を説明していないコードを表示します作業。私たちは助けることができるかもしれません。 – user2079303

+0

あなたが試したコードを投稿し、何をしようとしているのか説明してください。 – soulsabr

+2

あなたの英語はこのサイトで十分です。完璧である必要はありません。あなたのコードも完璧である必要はありませんが、とにかくそれを含めるべきです。エラーを修正するのに役立つのは、作業コードを提供するよりも、より簡単で生産的です。 – dasblinkenlight

答えて

1

になります)。 おそらく最も効率的ではない単純な方法は、ループ内のそれらの文字を数え、最も長い文字セットのインデックスを保持することです。

  1. 1つのint型でループ内で文字
  2. カウント同じ文字の現在の数をカウントし、その開始インデックスをマークするために
  3. はインデックスカウンタと変数を作成して標準入力から、あなたの文字列を取得します(合計が大きい場合にのみループの後にあなたがループ内で発生した最後の1)
  4. よりCHAR(と同じ、以下の文字を返す)文字列内の[インデックス]
+0

ありがとう、私はそれを書いて、それは働いた:D –

関連する問題