计算机考研复试上机题 —— 单词替换 (北京大学)

 

 

思路:

  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 }

 

 

posted @ 2020-02-17 16:18  a最简单  阅读(487)  评论(0编辑  收藏  举报