【字符串】替换空格【剑指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; }