文章
4
粉丝
135
获赞
11
访问
24.3k
本题解采用两个字符数组的解法,将符合条件的字符添加的新数组中,最后输出新数组即可
首先,按顺序,如果字符等于g z u三者的一个(含大写),则计数器cnt数值++,直到cnt==3,表示gzu三个字符连续出现,此时它们不会被添加到新数组中;
其次,如果发现没有连续出现gzu,而是出现了g或者gz,则需要将这两个字符添加到新字符数组中,并将计数器cnt的值赋值为0;
最后一种情况,字符不属于g z u连续出现的情况,直接添加即可。
代码如下:
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
char str[5] = {'g', 'z', 'u'};
int main()
{
char s[105];
char s1[105];
int cnt = 0, j=0;
gets(s);
int len = strlen(s);
int len1 = 0;
for (int i=0; i<len; i++){
len1 = len - i + 1;
// 符合g z u三个字母的情况
if ((s[i] == str[cnt] || s[i] == (str[cnt] - 32)) && len1 >= 3){
cnt++;
if (cnt == 3){
cnt = 0;
}
}
// 不是连续出现g z u的情况,需要将之前略过的字母补上
else if (cnt > 0 && s[i] != str[cnt] && s[i] != (str[cnt]-32)){
while(cnt>0){
s1[j++] = s[i-cnt];
cnt--;
}
i--;
}
// 正常情况,直接添加到新字符数组即可
else{
s1[j++] = s[i];
}
}
puts...
登录后发布评论
暂无评论,来抢沙发