zoukankan      html  css  js  c++  java
  • 31-语言入门-31-字符串替换

     
    描述
    编写一个程序实现将字符串中的所有"you"替换成"we"

    输入
    输入包含多行数据

    每行数据是一个字符串,长度不超过1000
    数据以EOF结束
    输出
    对于输入的每一行,输出替换后的字符串
    样例输入
    you are what you do
    样例输出
    we are what we do
     
     
    代码:
    #include <stdio.h>

    //处理数据
    static void handlerData(char *arr,int len);

    int main()
    {
         while(1)
         {
              char inputArr[1000] = {''};
              if(gets(inputArr) == NULL)
                   break;
              handlerData(inputArr,100);
              puts(inputArr);
         }
        
         return 0;
    }

    //处理数据
    static void handlerData(char *arr,int len)
    {
         if(len < 3)
              return;
             
         //you-we
         int i = 2;
         for(;i < len;++i)
         {
              if(arr[i-2] == '' || arr[i-1] == '' || arr[i]=='')
                   break;
                  
              if(arr[i-2]=='y' && arr[i-1] == 'o' && arr[i] == 'u')
              {
                   arr[i-2] = 'w';
                   arr[i-1] = 'e';
                   int flag = i;
                  
                   while(flag<len && arr[flag] != '' && flag+1<len)
                   {
                        arr[flag] = arr[flag+1];
                        ++flag;
                   }
              }
         }
    }
     
    从之前的题目联系中得到的经验是对于边界的判断要考虑,该题目中对索引的代码写法就是考虑了边界的问题。
     
    另外STL可以轻松解决:

    #include<algorithm>
    #include<iostream>
    #include<string>

    using namespace std;

    int main()
    {
        string s, s1, s2;
        while(getline(cin,s))
        {
            int flag;
            s1 = "you";
            s2 = "we";
            flag = s.find(s1,0);
            while(flag != string::npos)
            {
                s.replace(flag, 3, s2);
                flag = s.find(s1, flag + 1);
            }
            cout << s << endl;
        }
        return 0;
    }

  • 相关阅读:
    2-sat问题,输出方案,几种方法(赵爽的论文染色解法+其完全改进版)浅析 / POJ3683
    hdu 4587 2013南京邀请赛B题/ / 求割点后连通分量数变形。
    最小费用最大流粗解 poj2516
    hdu3078 建层次树+在线LCA算法+排序
    hdu 3594 Cactus /uva 10510 仙人掌图判定
    有向图最小路径覆盖方法浅析、证明 //hdu 3861
    hdu 1827 有向图缩点看度数
    条件转化,2-sat BZOJ 1997
    2-sat基础题 BZOJ 1823
    2-sat 分类讨论 UVALIVE 3713
  • 原文地址:https://www.cnblogs.com/sharpfeng/p/5141894.html
Copyright © 2011-2022 走看看