您的位置:首页 > Web前端

剑指offer--替换字符

2017-03-25 16:52 106 查看
若输入”we are happy”,则输出”we%2dare%2dhappy”;

先通过下面的替换原理图梳理一下思路:



通过上图可以看到new_end = end + 2 × count;得到这个思路后,我们在采用从后往前复制,且注意循环的条件(end = new_end),就可得到替换后的字符串。

完整源代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <Windows.h>
#include <string.h>

void Replace(char arr[], int len)
{
int count = 0;
char *p = arr;
int end = len;
int new_end = 0;
while (*p)
{
if (*p == ' ')
{
count++;
}
p++;
}
new_end = len + 2 * count;

while (end < new_end)
{
if (arr[end] == ' ')
{
end--;
arr[new_end--] = '0';
arr[new_end--] = '2';
arr[new_end--] = '%';
}
else
{
arr[new_end--] = arr[end--];
}
}
}
int main()
{
char str[20] = "we are happy";
Replace(str, strlen(str));
printf("%s\n", str);
system("pause");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  剑指offer