前言
华为春招数字化IT应用工程师岗位,笔试是三道编程题,第一题相对比较简单,偏爱考字符串。下面是对题目的回忆。
一、描述
对于输入的字符串,从左到右扫描字符串, 如果存在由三个以上(包括三个)连续相同字符组成的字串,就将这个子串从原串中去掉,并将原串剩下的部分拼接到一起。重复上述过程,直到无法去掉任何子串。如果所有的字符都被消除输出0。
例如:
输入:abbcccbd
输出:ad
输入:abbbaa
输出:0
我采取的是一种暴力解决法。即从头到尾遍历整个字符串,如果找到三个或者三个以上连续相同的字符,就把它覆盖掉,然后再从头开始,直到没有三个或者三个以上连续相同的字符为止。
上代码
#include<stdio.h>
#include<string.h>
void Delete(char string[])
{
int i=0, j;
bool flag = false;
while(string[i] != '\0')
{
j = i + 1;
while(string[i] == string[j] && string[j] ==string[j+1])
{
j++;
flag = true;
}
if(flag)