剑指offer-替换空格

2016/05/24 C和C++基础

替换空格

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

方法一:

void replaceSpace(char *str,int length) {
    if(str==NULL) return;
	char *temp=new char[length];
    char *p=str;
    int c=0;
    while(*p!='\0'){
        if(*p==' '){
            temp[c++]='%';
            temp[c++]='2';
            temp[c++]='0';
        }else{
            temp[c++]=*p;
        }
        p++;
    }
    for(int i=0;i<c;i++){
        str[i]=temp[i];
    }
    str[c]='\0';
}

方法二:

#include <iostream>
#include <string>
using namespace std;

void replaceSpace(char *str,int length){
	int j=0;
	int n=0;
	while(str[j]!='\0'){
		if(str[j]==' ')
			n++;
		j++;
	}
	int len=length+n*2+1;
	str[len-1]='\0';
	int c=len-2;
	for(int i=length-1;i>=0;i--){
		if(str[i]!=' '){
			str[c]=str[i];
			c--;
		}else{
			str[c]='0';
			str[c-1]='2';
			str[c-2]='%';
			c=c-3;
		}
	}
	cout<<str<<endl;
}

int main(){
	char str[20]="We Are Happy";
	replaceSpace(str,12);
	system("pause");
}

Search

    Post Directory