计算机考研复试上机题 —— 单词替换 (北京大学)
思路:
1. 通过分割标志,将整句话分割成多个单词;
2. 将指定的单词替换内容,输出替换后的句子;
C++代码:
1 #include<iostream>
2 #include<string>
3 #include<vector>
4
5 using namespace std;
6
7 vector<string> list;
8 string str, temp;
9
10
11 //通过空格分割单词
12 void splitString() {
13 //start:单词起点, span:单词长度
14 int start, span, length;
15 start = span = 0;
16 length = str.length();
17 for(int i=0; i<length; i++) {
18 if(str[i] == ' ') {
19 //substr(起始下标, 截取长度)
20 temp = str.substr(start, span);
21 list.push_back(temp);
22 //防止出现连续空格
23 while(str[i+1] == ' ') {
24 i++;
25 }
26 start = i+1;
27 //置零
28 span = 0;
29 continue;
30 }
31 //处理最后一个单词
32 if(i == length-1) {
33 //留意最后一个单词的长度
34 temp = str.substr(start, span+1);
35 list.push_back(temp);
36 }
37 span++;
38 }
39
40 }
41
42
43 void solve() {
44 int listLen;
45 string origin, replace;
46 //通过回车结束字符串而不是空格
47 getline(cin, str);
48 //分割单词
49 splitString();
50 cin>> origin>> replace;
51 listLen = list.size();
52 for(int i=0; i<listLen; i++) {
53 temp = list[i];
54 //替换指定单词的内容
55 if(temp == origin) {
56 list[i] = replace;
57 }
58 }
59 //打印单词结果
60 for(int i=0; i<listLen; i++) {
61 if(i != 0) {
62 cout<< " ";
63 }
64 cout<< list[i];
65 }
66 cout<< endl;
67 }
68
69
70 int main() {
71 solve();
72
73 return 0;
74 }