新浪面试题:删除字符串中多余的空格

简介:

题目描述:

给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。 
比如 “  I like     http://hi.baidu.com/mianshiti  ” 会变成 "I like http://hi.baidu.com/mianshiti"。

void RemoveExtraSpace(char* str)
{
    bool keep_space = false;
    int new_str_end = 0;
 
    for (int i = 0; str[i]; ++i)
    {
        //如果遍历得到的此字符不是空格,则将标志符置为true;在进行else if语句时便可加入一空格;加入空格后标志符为false;这样就达到了缩进空格的目的;
        if (str[i] != ' ')
        {
            str[new_str_end++] = str[i];
            keep_space = true;
        }
        //如果遍历得到的此字符是空格,则将标志符置为false;
        else if (keep_space)
        {
            str[new_str_end++] = str[i];
            keep_space = false;
        }
    }
 
    //在进行最后处理时,判断最后一个字符是否为空格;如果是,则根据题目要求,将其去除;如果不是,则在其后面添加字符串结束符
    if (new_str_end > 0 && str[new_str_end - 1] == ' ')
    {
        str[new_str_end - 1] = '\0';
    }
    else
    {
        str[new_str_end] = '\0';
    }
}

目录
相关文章
|
7月前
|
测试技术
leetcode-1576:替换所有的问号
leetcode-1576:替换所有的问号
53 1
如何去掉字符串开头,结尾或者中间的空格及其他不想要的字符
去掉文本字符串开头,结尾或者中间不想要的字符,比如空白。
|
7月前
leetcode代码记录(第一个出现两次的字母
leetcode代码记录(第一个出现两次的字母
37 2
|
7月前
如何去掉字符串中文括号及其内部的内容三种方式
如何去掉字符串中文括号及其内部的内容三种方式
240 0
|
Cloud Native
【刷题日记】316. 去除重复字母
本次刷题日记的第 42 篇,力扣题为:316. 去除重复字母 ,中等
|
7月前
|
缓存
牛客网刷题总结(如何清除缓存区,字母大小写替换的两种方法,一元二次方程解的输出)
牛客网刷题总结(如何清除缓存区,字母大小写替换的两种方法,一元二次方程解的输出)
52 0
|
PHP
PHP字符串学习之怎么去除其他字符,只留下数字
在之前的文章《PHP字符串学习之将字符串分成更小长度的子串》中,我们介绍了分割字符串,将字符串分成更小子串的方法。这次继续PHP字符串的学习与练习,看看如何提取字符串中的数字字符,有需要的可以参考参考~ 本文的主题是:“提取字符串中的数字字符”。例如我们给出下面一个字符串 $str ='0我是123456一段测试的字789符串0'; 如何去除其他字符,只返回由字符串中数字字符组成的子串“01234567890”?下面给大家介绍两种方法:
276 0
LeetCode每日一题-9:替换后的最长重复字符串
LeetCode每日一题-9:替换后的最长重复字符串
|
算法 安全
每日算法刷题Day7-比较字符串大小,去掉多余的空格,单词替换
⭐每日算法题解系列文章旨在精选重点与易错的算法题,总结常见的算法思路与可能出现的错误,与笔者另一系列文章有所区别,并不是以知识点的形式提升算法能力,而是以实战习题的形式理解算法,使用算法。
309 0
每日算法刷题Day7-比较字符串大小,去掉多余的空格,单词替换
去掉多余的空格---输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。输入格式
输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。 输入格式 共一行,包含一个字符串。 输出格式 输出去掉多余空格后的字符串,占一行。 数据范围 输入字符串的长度不超过 200200。 保证输入字符串的开头和结尾没有空格。
326 0