转:面试题

<!-- lang: cpp -->
/**
    *删除字符串中的“b”和“ac”,
    *需要满足如下条件:字符串只能遍历一遍,不能使用额外的空间。
    *例如:acbac->"";aaac->aa;ababac->aa;特别注意:aaccac->""
    *题目转自:@陈利人(sina weibo)
    **/
#include <stdio.h>
#include <string.h>

int del(char *p,int n);

int main(){
    char input[100];
    int i,j;

    gets(input);

    for(i=0;i<strlen(input);i++)
    {
        if(*(input+i) == '\0')
        {
            printf("%s",input);
            return 0;
        }
        if(*(input+i) == 'b')
        {
            del(input,i);
            i--;
        }
        else if(*(input+i) == 'c')
        {
            if(i>0)
            {
                if(*(input+i-1) == 'a')
                {
                    del(input,i-1);
                    del(input,i-1);
                    i=i-2;
                }
            }else
                continue;
        }
    }

    printf("%s",input);

    return 0;
}

int del(char *p, int n)
{
    int i;
    for(i=n;i<strlen(p)-1;i++)
    {
        *(p+i) = *(p+i+1);
    }
    *(p+i) = '\0';

    return 0;
}

你可能感兴趣的:(转:面试题)