zoukankan      html  css  js  c++  java
  • 字符串的查找删除

    虽然是道水题,但还是有点东西可写的,顺道学习了一下stringfind()的用法。

    最暴力的思路就是找一个删一个,但删除的话必然涉及到大量元素的移动。

    int main()
    {
        string s;
        cin>>s;
        getchar();
    
        for(int i=0;i<s.size();i++) s[i]=tolower(s[i]);
    
        string a,b;
        while(getline(cin,a))
        {
            b=a;
            for(int i=0;i<b.size();i++) b[i]=tolower(b[i]);
    
            int pos=b.find(s);
            while(pos != string::npos)
            {
                a.erase(pos,s.size());
                b.erase(pos,s.size());
                pos=b.find(s);
            }
    
            pos=b.find(' ');
            while(pos != string::npos)
            {
                a.erase(pos,1);
                b.erase(pos,1);
                pos=b.find(' ');
            }
    
            cout<<a<<endl;
        }
        //system("pause");
        return 0;
    }
    

    自然想到用空间换时间的做法,新开一个string来存储去除目标字符后的字符串,在查找部分也可以优化一下,让其从指定下标处开始查找。

    int main()
    {
        string s;
        cin>>s;
        getchar();
    
        for(int i=0;i<s.size();i++) s[i]=tolower(s[i]);
    
        string a,b;
        while(getline(cin,a))
        {
            b=a;
            for(int i=0;i<b.size();i++) b[i]=tolower(b[i]);
    
            int pos1=b.find(s,0),pos2=b.find(' ',0);
            string res;
            for(int i=0;i<b.size();i++)
            {
                if(i == pos1)
                {
                    pos1=b.find(s,i+s.size());
                    i+=s.size()-1;
                }
                else if(i == pos2)
                {
                    pos2=b.find(' ',i+1);
                }
                else res+=a[i];
            }
    
            cout<<res<<endl;
        }
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    GHOJ 683 小球
    GHOJ 682 图的m着色问题
    GHOJ 681 最佳调度问题
    YBT 最长公共子上升序列
    YBT 数的划分
    Educational Codeforces Round 68 (Rated for Div. 2) C
    马里奥项目中对象直接通讯小结
    Educational Codeforces Round 67 (Rated for Div. 2) C
    19新疆省赛总结
    Codeforces Round #560 div3 (C,D)
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14349038.html
Copyright © 2011-2022 走看看