替换字符串空格
2016-05-17 17:31
281 查看
本算法通过从后遍历字符串实现O(n)的时间复杂度替换字符串中的空格。
总结:合并两个数组(包括字符串)时,如果从前往后复制每个数字(或字符)需要重复移动数字(或字符)多次,那么可以考虑从后往前复制,这样就能减少复制的次数,从而提高效率。
void replaceSpace(char *str, int maxLength) { int length = strlen(str); int spaceNum = 0; for (int i = 0; i < length; i++) { if (str[i] == ' ') { spaceNum++; } } int oldIndex = length; int newIndex = length + 2 * spaceNum; if (newIndex > maxLength) { return; } while (newIndex > oldIndex) { if (str[oldIndex] == ' ') { str[newIndex--] = '0'; str[newIndex--] = '2'; str[newIndex--] = '%'; oldIndex--; } else { str[newIndex--] = str[oldIndex--]; } } }
总结:合并两个数组(包括字符串)时,如果从前往后复制每个数字(或字符)需要重复移动数字(或字符)多次,那么可以考虑从后往前复制,这样就能减少复制的次数,从而提高效率。
相关文章推荐
- [vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件
- 【其他】配置JIRA
- discuz 3.1论坛快照被百度劫持解决方案
- 定时任务进程调度处理
- IP反查网站/IP反查接口 域名汇总
- ios开发——代码实现获得手机系统的名字和版本号&当前网络状态
- subinacl 强大而不足
- 【JNI】拒绝各种坑!Android Studio 下创建JNI项目
- 合并排序
- 阿里云服务器重启后网站无法访问解决办法
- String, StringBuilder, StringBuffer问题
- YII学习总结5(视图)
- Bootstrap教程JS插件弹出框学习笔记分享
- Ubuntu 安装软件出现如下错误:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
- kendo.ui.Grid绑定单双击事件
- Ajax发送json格式数据到Asp.net MVC服务端的一些代码片段
- 强制开启android webview debug模式使用Chrome inspect
- 检测App采集IDFA及app上架要点
- 重要信息记录
- linux centos安装nginx