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

简介:

题目描述:

给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。 
比如 “  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';
    }
}

==============================================================================
本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2012/03/23/2414301.html,如需转载请自行联系原作者
相关文章
|
2月前
|
存储
力扣面试经典题之数组/字符串
力扣面试经典题之数组/字符串
32 0
|
9天前
|
存储 安全 Java
Java面试题:请解释Java中的字符串和字符串缓冲区?
Java面试题:请解释Java中的字符串和字符串缓冲区?
9 0
|
1月前
|
存储 算法 数据挖掘
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
|
2月前
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
41 5
【刷题】 leetcode 面试题 01.06 字符串压缩
|
2月前
|
数据安全/隐私保护 C++ 索引
【一刷《剑指Offer》】面试题 4:替换空格
【一刷《剑指Offer》】面试题 4:替换空格
|
2月前
|
索引 Python Go
【python学习】字符串详解,面试必问公司的问题
【python学习】字符串详解,面试必问公司的问题
|
2月前
|
存储 Go 开发者
Golang深入浅出之-Go语言字符串操作:常见函数与面试示例
【4月更文挑战第20天】Go语言字符串是不可变的字节序列,采用UTF-8编码。本文介绍了字符串基础,如拼接(`+`或`fmt.Sprintf()`)、长度与索引、切片、查找与替换(`strings`包)以及转换与修剪。常见问题包括字符串不可变性、UTF-8编码处理、切片与容量以及查找与替换的边界条件。通过理解和实践这些函数及注意事项,能提升Go语言编程能力。
50 0
|
2月前
面试题 01.06. 字符串压缩
面试题 01.06. 字符串压缩
12 0
|
2月前
|
算法 测试技术 索引
力扣面试经典题之数组/字符串(二)
力扣面试经典题之数组/字符串(二)
18 0
|
2月前
|
存储 Java 编译器
Java字符串变量声明与赋值的常见面试题——完整剖析
Java字符串变量声明与赋值的常见面试题——完整剖析
26 1