《剑指Offer》面试题四之替换空格
来源:互联网 发布:软件导刊 核心期刊 编辑:程序博客网 时间:2024/04/30 08:37
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。
例如:当字符串为We Are Happy.
则经过替换之后的字符串为We%20Are%20Happy。
题目分析
直观的做法就会从头到尾扫描字符串,遇到空格时就做替换。由于是把一个字符替换成了三个字符,所以后面的字符串得整体往后挪动两位。
这时候我们会发现,如果空格的数目过多,就会让问题过于复杂化,时间复杂度也会达到O(n^2)。
但是如果先的得到该字符串(长度假设为n)中空格的数目,假设为m,那么替换后的字符串的长度应该为 n+2*m,这时候申请这样长度的一个数组,从后向前一个字符一个字符的复制,这样时间复杂度就是O(n)。
相信你看到下面的代码就会明白我的意思。
算法设计
public static String getTempString(String str,int spaceNum){//传入字符串,以及字符串中空格的数目 char[] tempStr=new char[str.length()+2*spaceNum]; //初始化一个长度为 替换后的字符串的长度 的数组 int j=tempStr.length-1; for(int i=str.length()-1;i>=0;i--){ if(str.charAt(i)==' '){ //如果是空格,将当前位置以及前面的两个位置替换为 % 2 0 tempStr[j--]='0'; tempStr[j--]='2'; tempStr[j--]='%'; }else{ //反之,直接复制 tempStr[j--]=str.charAt(i); } } return new String(tempStr); }
最后
该题目是九度OJ上面的一道题,对应地址为:
http://ac.jobdu.com/problem.php?pid=1510
如果你完成了这个算法,就去测试一下看看是否能AC!
0 0
- 《剑指Offer》面试题四之替换空格
- 剑指Offer----面试题四:替换空格
- 剑指offer,面试题四替换空格
- 剑指offer面试题之替换空格
- 剑指offer之面试题4:替换空格
- 剑指offer之面试题4替换空格
- 剑指Offer之面试题4:替换空格
- 剑指Offer学习之面试题4 : 替换空格
- 剑指offer-->面试题4 替换空格
- 《剑指offer》面试题4 替换空格
- 【剑指offer】面试题4:替换空格
- 【剑指offer】面试题4替换空格
- 剑指offer 面试题4 替换空格
- 剑指Offer:面试题4 替换空格
- 剑指offer-面试题4-替换空格
- 《剑指Offer》面试题4:替换空格
- 【剑指offer】 面试题4: 替换空格
- 剑指offer 面试题4---替换空格
- 【剑指offer】面试题13:在O(1)时间删除出链表结点
- phptrace 的使用
- 如何找到占用端口的进程并关闭
- 2016的封闭开发
- Keywords Search hdu2222 ac自动机
- 《剑指Offer》面试题四之替换空格
- JVM垃圾收集算法
- 类中static function的重要作用
- UVM概述及uvm_component和uvm_object(一)
- Redis常用命令(String数据类型的操作)
- lucene--索引的创建
- 【Android】图形图像处理
- HQL语句多表联合查询,Mysql不设置外键关系
- SpringMVC学习(四)之使用POJO作为参数