【字符串】替换空格【剑指offer】

替换空格

http://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423

#include <stdio.h>
#include <iostream>

using namespace std;


class Solution{
public:
    void replaceSpace(char str[],int length) {
        //合法性检验
        if(str == NULL || length <= 0)
            return;
        //计算实际长度和替换后的长度
        int i=0, count=0;
        while(str[i] != '\0')
        {
            if(str[i] == ' ')
                count++;
            ++i;
        }
        int oriIndex = i, newIndex = oriIndex + count * 2; 

        if(newIndex < oriIndex)
            return;

        //逆序移动  循环结束条件两个指针指到相同位置
        while(newIndex != oriIndex)
        {
            //旧索引处发现空格,新索引处替换并添加
            if(str[oriIndex] == ' ')
            {
                str[newIndex--] = '0';
                str[newIndex--] = '2';
                str[newIndex--] = '%';
            } 
            else//未发现 复制原先位置字符
            {
                str[newIndex] = str[oriIndex];
                newIndex--;
            }  
            //无论是否发现,旧索引都需要向前移动一个索引
            --oriIndex;        
        }
    }   
};

int main()
{
    char str[100] = " We are happy.";
    int len = sizeof(str) / sizeof(char);
    Solution sol;
    sol.replaceSpace(str,100);
    cout<<str<<endl;
}
全部评论

相关推荐

10-25 22:20
门头沟学院 Java
代码飞升:同学院本,个人亮点去了,打招呼里面的废话也去了,学院本就是路边一条,明天拉满然后该学还是学,小厂也行尽量先有一段实习。另外你的项目描述写的不好,具体列一下可被提问的点,然后量化一下指标或者收益吧
投了多少份简历才上岸
点赞 评论 收藏
分享
09-29 15:34
已编辑
北京航空航天大学 C++
做个有文化的流氓:结果是好的,过程不重要,而且你的offer太多了
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务