剑指offer面试题4—替换空格

来源:互联网 发布:qq游戏网络加速器 编辑:程序博客网 时间:2024/06/08 11:11

题目比较简单,把字符串中的空格替换为相应的字符串

如果从前开始循环替换,每移动一个元素,后面的数据都需要移动,因此选用的方法应该是从后面行前替换

#include "static.h"#include <iostream>using namespace std;void ReplaceBlank(char *Src, char *transString,int Length){int transSize = 0;int srcSize = 0;int dstSize = 0;int tabSize = 0;while (transString[transSize] != '\0'){transSize++;}while (Src[srcSize] != '\0'){if (Src[srcSize] == ' '){tabSize++;}srcSize++;//<表示原始字符串的长度}dstSize = srcSize+(transSize-1)*tabSize;if (dstSize > Length){cout<<"the arry's memery is not enough";return;}while (srcSize>= 0 && dstSize > srcSize){if (Src[srcSize] == ' '){memcpy(Src+(dstSize-transSize+1),transString,transSize);dstSize -= transSize;srcSize--;}else{Src[dstSize--] = Src[srcSize--];}}}int main(){   const int Length = 50;char src[Length];char* transString = "%20";cout << "Please enter the origin string"<<endl;cin.getline(src,50);printf("%s \n",src);ReplaceBlank(src,transString,Length);printf("%s \n",src);return 0;}


0 0
原创粉丝点击