i3geek.com
闫庚哲的个人博客

【算法】不开辟额外空间,删额外空格——京东2015校招

题目

给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。例如:” i am a little boy. “,变成”i am a little boy”,语言不限,但不要用伪代码作答,函数输入输出请参考如下的函数原型:

void FormatString(char str[],int len){
 }

解题

去除 中间空格的函数

char* removeEmpty(char *str, char ch) {
    char *it1 = str;
    char *it2 = str;
    while (*it2 != '\0') {
        //while (*it2 == ch) {it2++; }
        while (*it2 == ch  && *(it2 + 1) == ch)
        {
            it2++; 
        }
        *it1++ = *it2++;
    }
     return str;
}
void FormatString(char str[], int len){
    str = removeEmpty(str, ' ');
}

来源:京东2015校招

赞(0)
未经允许不得转载:爱上极客 » 【算法】不开辟额外空间,删额外空格——京东2015校招
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址