剑指offer——替换空格
2017-06-04 21:21
393 查看
书中第三题
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:主要问题在于复杂度,从前往后进行空格寻找并替换,复杂度更高,因为字符移动的次数更多。
从后往前,字符移动的次数更少,复杂度更低。
以及不要产生过多的对象。
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:主要问题在于复杂度,从前往后进行空格寻找并替换,复杂度更高,因为字符移动的次数更多。
从后往前,字符移动的次数更少,复杂度更低。
以及不要产生过多的对象。
public class Solution { public String replaceSpace(StringBuffer str) { int spacenum = 0;//spacenum为计算空格数 for(int i=0;i<str.length();i++){ if(str.charAt(i)==' ') spacenum++; } int indexold = str.length()-1; //indexold为为替换前的str下标 int newlength = str.length() + spacenum*2;//计算空格转换成%20之后的str长度 int indexnew = newlength-1;//indexnew为为把空格替换为%20后的str下标 str.setLength(newlength);//使str的长度扩大到转换成%20之后的长度,防止下标越界 for(;indexold>=0 && indexold<indexnew;--indexold){ if(str.charAt(indexold) == ' '){ // str.setCharAt(indexnew--, '0'); str.setCharAt(indexnew--, '2'); str.setCharAt(indexnew--, '%'); }else{ str.setCharAt(indexnew--, str.charAt(indexold)); } } return str.toString(); } }
相关文章推荐
- [剑指offer学习心得]之:替换空格
- 剑指offer,面试题四替换空格
- 剑指Offer面试题4[替换空格]
- 剑指offer之替换空格
- 剑指Offer---替换空格
- 剑指offer-替换空格
- 面试题04_替换空格_剑指Offer系列
- 《剑指offer》面试题4(替换空格)
- 剑指offer——替换空格&合并数组
- 剑指Offer:面试题4 替换空格
- 剑指offer:替换空格
- 牛客网-《剑指offer》-替换空格
- 替换空格(剑指offer面试题4)
- 《剑指offer》面试题4 替换空格
- 剑指offer 面试题4: 替换空格 题解
- 剑指Offer——替换空格
- 《剑指offer》004-替换空格(java实现)
- 剑指offer--替换空格
- 剑指Offer,面试题4,替换空格,Java写法
- 《剑指offer》4:替换空格