• POJ 1572 字符串替换


    http://poj.org/problem?id=1572     

    看了网上那么多行的C++代码的做法我也是被吓到了,其实用C++的string类函数很简单啊

    关键是替换的字符串不能回头,不然有些测试数据,一个循环过后,你又回头重新再新串中去查,很可能就无限循环了。

    1.假如定义一个string s[1],则定义了一个字符串数组:

    string s[2];
    s[1]="01234 5678";

    cout<<s[1].length()<<" "<<s[0].length()<<endl;

    输出0 10

    如果用getline(cin,string*),则会读取整个一行作为一个字符串存储在string*中,包括空格。

    2.             str3.erase(index,str1[i].length());//删除index的位置
                    str3.insert(index,str2[i]);//插入到index位置


                  比如str=abana str1=ban,str2=ny,则index返回1,从2开始删除,删除到str1的长度。

                 之后str=ana,insert把str2插入下标1的位置,插入长度为str2的长度。


    #include <iostream>
    #include <cstdio>
    #include <string>
    using namespace std;
    
    int main()
    {
        //freopen("in.txt","r",stdin);
        while(1)
        {
            int n;
            scanf("%d",&n);
            if(n==0)
                break;
            string str1[12];
            string str2[12];
            getchar();
            for(int i=0; i<n; i++)
            {
                getline(cin,str1[i]);
                getline(cin,str2[i]);
            }
            string str3;
            getline(cin,str3);
            for(int i=0; i<n; i++)
                while(1)
                {
                    int index=str3.find(str1[i]); //查找要替换的字符串位置,没有返回string::npos,返回到查找到的串的第一个字符的下标
                    if(index==string::npos)
                        break;
                    str3=str3.replace(index,str1[i].length(),str2[i]); //replace函数直接替换,或者用erase和insert也行
                    //str3.erase(index,str1[i].length());//删除index的位置
                    //str3.insert(index,str2[i]);//插入到index位置
                }
            cout<<str3<<endl;
        }
        return 0;
    }
    



  • 相关阅读:
    java分页查询--oracle
    Tomcat Excel中的数据导出到页面中显示
    接口调用类3
    接口工具类2
    接口工具类
    redis 对外访问
    Spring 项目启动时执行
    scp 本地上传/下载服务器文件
    CentOS 安装 rabbitMQ
    卸载rabbitMQ
  • 原文地址:https://www.cnblogs.com/mingrigongchang/p/6246264.html
Copyright © 2020-2023  润新知