问题标题: 酷町堂:1100 复合单词规范书写

0
0

0
已采纳
贾文卓
贾文卓
高级光能
高级光能

思路:如果当前字符是连字符,则分两种情况讨论:

1.如果上一个字符不是连字符,就保留当前字符。

2.如果上一个字符是连字符,就将当前字符删去。

核心代码如下:

for(int i = 0; i < s.size(); i++) //遍历每一位字符。
    if(s[i] != '-' || s[i] == '-' && s[i - 1] != '-') cout << s[i]; //直接输出。如果当前字符不是连字符则一定输出。如果当前字符是连字符则看前面一位是否为连字符(参见思路)。

 

贾文卓在2018-07-19 09:49:00追加了内容

这道题目还可以不使用字符串即可解决。

思路:设c为当前字符,last为上一个字符。伪代码如下:

输入last;
输出last;
//将第一个字符读入last并输出。
while(输入当前字符c) {
	if(当前字符c不为连字符 || 当前字符c为连字符 && 上一个字符last不为连字符) 输出当前字符;
    上一个字符last = 当前字符c;
}

 

0
0
0
我要回答