分享

剑指offer2 替换空格

 雪柳花明 2017-05-19
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

class Solution {
public:
void replaceSpace(char *str,int length) {
int spaceNumber=0;//计算空格的数量
        
        for(int i=0;i<length;i++){
            if(str[i]==' ')
                spaceNumber++;
        }
        
        int newIndex=length+2*spaceNumber;//扩充后的字符串总长度
        char *index=str+length;//str是指针首地址  index现在是str的末指针
        
//从后往前填字符
        while(index>=str){
            if(*index==' '){
                str[newIndex--]='0';
                str[newIndex--]='2';
                str[newIndex--]='%';
            }else{
                str[newIndex--]=*index;
            }
             index--;
        }
            
}
};

// replace.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <iostream>

using namespace std;

int strleng(char str[])
{
int i = 0;
int ori_len = 0;
int space_num = 0;
while (str[i]!='\0')
{
ori_len++;
if (str[i] == ' ')
space_num++;
i++;
}

return ori_len;
}

//length是str中字符的长度
void replaceSpace(char *str, int length) {
int spaceNumber = 0;

for (int i = 0; i<length; i++){
if (str[i] == ' ')
spaceNumber++;
}

int newIndex = length + 2 * spaceNumber;
char *index = str + length;

while (index >= str){
if (*index == ' '){
str[newIndex--] = '0';
str[newIndex--] = '2';
str[newIndex--] = '%';
}
else{
str[newIndex--] = *index;
}
index--;
}

}


int _tmain(int argc, _TCHAR* argv[])
{
char str[] = "hello world";

cout << sizeof(str) << endl;

int res=strleng(str);

cout << res << endl;

replaceSpace(str,11);
cout << str << endl;

system("pause");

return 0;
}









    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多