文字列の検索

2161 ワード

に質問
ある日、ニンニク君とブロッコリー妹が公園を散歩していて、歩いていて、なんてことだ!彼らはそれぞれきれいな文字列を拾ったが、ニンニク君は好奇心が強く、自分の文字列がブロッコリー妹の文字列に何回現れたのか知りたいと思っていた.例えば、ブロッコリー妹の文字列はabababa、ニンニク君の文字列はabaで、ニンニク君の文字列はブロッコリー妹の文字列に3回現れた.ニンニク君はいつもツンデレなので、教えてもらってもいいですか?
入力フォーマット
2行目、第1行目ココナッツ妹が拾った文字列、第2行目ニンニク君が拾った文字列を入力します.2つの文字列には、改行、ロールバック、0以外の任意の文字が含まれます.両方の文字列の長さは1000以下です.
出力フォーマット
ブロッコリーの妹に彼の文字列にニンニク君の文字列が何回現れたかを見つけてください.
サンプル入力1
i miss you! you
サンプル出力1
1
サンプル入力2
ossosso osso
サンプル出力2
2
構想
この問題はc++のstringの中のfind関数で作ることができて、青い橋の杯のあげたドキュメントはこのように書きます
検索構文:size_type find( const basic_string &str, size_type index ); size_type find( const char *str, size_type index ); size_type find( const char *str, size_type index, size_type length ); size_type find( char ch, size_type index ); find()関数:strが文字列に最初に現れた場所(indexから検索)を返します.見つからない場合はstring::nposを返し、strが文字列に最初に現れた位置を返します(indexから検索し、長さはlength).見つからない場合はstring::nposを返し、文字列にchが最初に現れた位置を返します(indexから検索します).見つからなかったらstring::nposに戻ります
インプリメンテーションコード
#include
#include
using namespace std;
int main()
{
    string a,b;
    getline(cin,a);
    getline(cin,b);
    int finda=a.find(b,0);//  b a         ( 0    )
    int c=0;//     
    while(finda!=string::npos)
    {
        c++;
        int finda1=finda+1;
        finda=a.find(b,finda1);
    }
    cout<return 0;
}