fzu 2122またLKityを参照


やあ!皆さん、こんにちは、TempleRunではみんな私を知っているでしょう.私は不器用で貧乏な猫LKityです.またFZUのACMerの皆様にお会いできて嬉しいです.最近FZUの皆さんにお会いしたACMerさんは合宿に励んでいて、一日中日光浴でごろごろしている私はストレス山大です!そこで、私は皆さんのために小さなツールを書くつもりです.LKityカードのテキストを交換します.このツールは、コードの変数を置き換えるなどの機能を助けることができます.本当にプログラミング、問題を磨くために必要な神器です.次の機能があります.
指定された文字列のすべての指定されたサブ列を別の指定された文字列に置き換えます.機能を強化するために、置換中は大文字と小文字は無視されます.また、再帰的な置換は行われません.
でも、不器用な猫として、私は心に余裕があって力が足りないんですよ.皆さんACMerが実現してくれることを願っています.(衆FZUのACMer:"……");Input入力には複数のデータが含まれています.標準入力として入力し、3行を入力します.第1の動作で検索する文字列S 1.S 1は大文字または小文字のみで構成され、その長さは区間[1,100]内である.第2の動作を置換する文字列S 2.S 2は[32125]の文字で構成され、その長さは区間[1100]内である.第3の動作の元の文字列S、Sは[32125]の文字からなる.その長さは区間[1,50000]内である.Output各グループのデータについて、置換後の文字列を出力してください.Sample Input abc bc ab aaa aaabca 333 Abcc##Sample Output aaa aaabc aba 333 bc abc##分析:問題の難易度はまあまあで、意外にも問題の意味を間違えて、そして私はgets()の後ろにgetchar()を追加して車に戻りますが、この問題には必要ありません.問題には車に戻りません.コピー&ペーストでわかる!
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
using namespace  std;
char  s1[150],s2[150],s3[50050];
int main()
{
    while(gets(s1))
    {
        gets(s2);
        gets(s3);
        for(int i=0;i<strlen(s3);i++)
        {
            int k=i,flag=1;
            for(int j=0;j<strlen(s1);j++,k++)
            {
                if(tolower(s3[k])!=tolower(s1[j]))
                {   
                    flag=0;
                    break;
                }
            }
            if(!flag)
            cout<<s3[i];
            else
            {
            i=k-1;
            cout<<s2;   
            }
        }
        cout<<endl;
    }
    return 0;
}