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