剑指offer--替换字符
2017-03-25 16:52
106 查看
若输入”we are happy”,则输出”we%2dare%2dhappy”;
先通过下面的替换原理图梳理一下思路:
![](https://img-blog.csdn.net/20170325164437805?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTEFMQUxBSklVSklV/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
通过上图可以看到new_end = end + 2 × count;得到这个思路后,我们在采用从后往前复制,且注意循环的条件(end = new_end),就可得到替换后的字符串。
完整源代码:
先通过下面的替换原理图梳理一下思路:
通过上图可以看到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》字符串中的字符替换
- 替换字符--《剑指offer》
- 剑指offer——替换字符
- 剑指offer系列之五十三:字符流中第一个不重复的字符
- JS Replace 全部替换字符 用法
- GDB的字符终端的替换工具——CGDB的使用与介绍
- Bailian2700 字符替换【字符串】
- 剑指offer:第一个只出现一次的字符位置
- JS 字符串操作函数 往指定位置插入字符 删除指定位置字符 替换指定位置字符
- Codeforces Round #449 (Div. 2)-897A.Scarborough Fair(字符替换水题) 897B.Chtholly's request(处理前一半) 897C.Nephren gives a riddle(递归)
- ultraedit如何将某个字符替换成换行
- asp字符替换
- STL std::string 字符全局替换
- 剑指offer 35. 第一次只出现一次的字符
- sed 处理替换字符中的特殊字符
- MSSQL Server实现text字段类型的字符替换
- javascript字符串替换所有要替换字符
- asp.net替换和恢复html特殊字符
- c#替换字符的多个空格多个换行及中文字符
- oralce正则表达式 替换非数字字符