题目1168:字符串的查找删除

题目描述:

给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。

输入:

输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。

输出:

删除输入的短字符串(不区分大小写)并去掉空格,输出。

样例输入:
in
#include 
int main()
{

printf(" Hi ");
}
样例输出:
#clude
tma()
{

prtf("Hi");
}




class App{
  private :
      string word  ;
      string text  ;
  public :
      App() ;
      App(string w , string t):word(w) , text(t){
         gao() ;
      }
      int judge(int index) ;
      void brush(int index) ;
      void gao() ;
      friend ostream & operator << (ostream&  , const App & ) ;
};

int App::judge(int index){
    int i = index ;
    int j = 0 ;
    while(i < text.length() && j < word.length()){
         if(text[i] == word[j]){
              i++ ;
              j++ ;
         }
         else
            return 0 ;
    }
    return j == word.length() ;
}

void App::brush(int index){
     int j = index ;
     for(int i = 0  ; i < word.length() ; i++)
        text[j++] = ' ' ;
}

void App::gao(){
     for(int i = 0 ; i < text.length() ; i++){
         if(judge(i))
            brush(i) ;
     }
}

ostream & operator << (ostream& out , const App & now){
     for(int i = 0 ; i < now.text.length() ; i++)
        if(now.text[i] != ' ')
            cout<<now.text[i] ;
     return out ;
}

int main(){
    string word , text;
    cin>>word ;
    getchar() ;
    while(getline(cin ,text)){
        App * app = new App(word, string(text))  ;
        cout<<(*app)<<endl ;
        delete app ;
    }
    return 0 ;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值