首页 > 代码库 > poj2944:单词替换
poj2944:单词替换
好几天没更了,这几天先是刚搬完砖,玩了一整天,接着乘火车回家,所以没做题。然后今晚做了这道简单题,最开始还WA了好几次,卧槽。。。
怒了直接推倒重写。。。
下面是题目
总时间限制: 1000ms 内存限制: 65536kB描述输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入输入包括3行,第1行是包含多个单词的字符串 s,第2行是待替换的单词a,(长度<=100)第3行是a将被替换的单词b。(长度<=100)s, a, b 最前面和最后面都没有空格.输出输出只有 1 行,将s中所有单词a替换成b之后的字符串。样例输入You want someone to help youYouI样例输出I want someone to help you
这种字符串的题目,如果没什么算法含量的话,一定要小心又小心。。。
特别匹配的时候一定要注意到此刻匹配到哪个位置了,一旦错了就蛋碎了。。。
今晚傻逼地WA了几次,还完全不知道问题在哪里。。。重新写了一遍才勉强A掉了。。。
没什么技术含量,仔细一点就肯定能A的题目,直接贴代码:
#include <iostream>#include <stdio.h>#include <cstring>using namespace std;char s[102],a[102],b[102];int main(){ cin.getline(s,101); cin.getline(a,101); cin.getline(b,101); int len = strlen(s); for(int i = 0; i < len; i ++) { bool f = false; int j = 0; for(; a[j] != ‘\0‘ && i +j< len; j ++) { if(s[i+j] == a[j]) ; else break; } if( (i+j == len && a[j]==‘\0‘) || (s[i+j] ==‘ ‘ && a[j] == ‘\0‘) ) f = true; if(f) { printf("%s",b); i+=j; if(i<len) printf(" "); } else { for(; i < len; i ++) { if(s[i] != ‘ ‘) printf("%c", s[i]); else { printf(" "); break; } } } } printf("\n");}
poj2944:单词替换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。