zoukankan      html  css  js  c++  java
  • 九度OJ1111题-单词替换

    题目1111:单词替换

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:6752

    解决:1891

    题目描述:

    输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

    输入:
    多组数据。每组数据输入包括3行,
    第1行是包含多个单词的字符串 s,
    第2行是待替换的单词a,(长度<=100)
    第3行是a将被替换的单词b。(长度<=100)
     
    s, a, b 最前面和最后面都没有空格.
    输出:
    每个测试数据输出只有 1 行,
    将s中所有单词a替换成b之后的字符串。
    样例输入:
    You want someone to help you
    You
    I
    样例输出:
    I want someone to help you
    来源:
    2007年北京大学计算机研究生机试真题
    代码:
     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string>
     4 #include <ctype.h>
     5 using namespace std;
     6 
     7 int main()    {
     8     char stra[201];
     9     while(gets(stra)){
    10         string a = stra;
    11         char strb[201];
    12         char strc[201];
    13         gets(strb); gets(strc);
    14         string b = strb;    string c = strc;
    15         int pos = a.find(b, 0);
    16         while(pos != string::npos)    {
    17             if ((a[pos-1] == ' ' || pos == 0) && (a[pos + b.size()] == ' ') || a[pos + b.size()] == 0){            
    18                 a.erase(pos, b.size());
    19                 a.insert(pos, c);
    20                 pos = a.find(b, pos);
    21             }
    22             else{
    23                 pos = a.find(b, pos + b.size());
    24             }
    25         }
    26         cout << a << endl;
    27     }
    28 
    29     return 0;
    30 
    31 }

    一开始没有写 if ((a[pos-1] == ' ' || pos == 0) && (a[pos + b.size()] == ' ') || a[pos + b.size()] == 0){

    这一行,导致一直是WA还不知道为什么

    应该是表示必须是“单词替换”,所以被替换的地方前后都要有空格

    或者是开头(pos == 0)和结尾( a[pos + b.size()] == 0

    对于 a[pos + b.size()] == 0要解释一下:

    因为是

    char stra[201];

    string a = stra;

    所以在stra中没有内容的部分默认是0,拷贝给a的都是有内容的部分,而string类型对于超出边界的下标指向的字符,填充的正好也是0

    所以 a[pos + b.size()] == 0表示超出了单词长度,也就是被替换的是最后一个单词(如果被替换了最后两个单词呢?这样两个单词中间就有空格了!?)

    其实这道题出的不好,并没有说明白必须都是单词,如果是单词中的某个字符是不允许被替换的,所以要加限制条件

  • 相关阅读:
    关于JAVA中URL传递中文参数的问题
    java中级,知识点归纳(一)
    Python中的常见特殊方法或属性—— dir方法和dict属性
    Python中的常见特殊方法—— del方法
    Python中的常见特殊方法—— repr方法
    Python关于多继承
    Python中的@函数装饰器到底是什么?
    Python中的函数(高级使用)
    Windows怎么安装配置Elasticsearch
    Python中单元测试出错了,会怎么样?
  • 原文地址:https://www.cnblogs.com/QingHuan/p/6978634.html
Copyright © 2011-2022 走看看