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;
    }
    
  • 相关阅读:
    [hdu4035]maze
    [codeforce][148d]
    [bzoj3507]通配符匹配
    [BZOJ4831]
    子串
    【洛谷1373】小a和uim之大逃离
    【JZOJ6303】演员
    [jzoj6296]选票
    字符串哈希
    [ABC137d&e]RE
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14349038.html
Copyright © 2011-2022 走看看