java 剑指offer 第二题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
2017-12-20 15:41
686 查看
**
方法一
配合StringBuffer 的indexOf方法和replace方法。
但是StringBuffer没有方法来判断str里面是否有空格,所以先转换为字符串判断是否有空格。
结果为17ms,13012k.
方法二
后来发现StringBuffer的indexOf方法找不到时返回值为-1,那么直接使用-1
来做判断代码简单很多。
测试通过为18ms,8928k。(不知道时间为什么会变多)
方法三
事后查看网上的方法,不调用replace方法实现。
测试结果18ms,8744k.
public class Solution { public String replaceSpace(StringBuffer str) {
首先程序给出的参数是StringBuffer类,那么我首先考虑的是就调用StringBuffer类的相关方法完成操作。
方法一
配合StringBuffer 的indexOf方法和replace方法。
但是StringBuffer没有方法来判断str里面是否有空格,所以先转换为字符串判断是否有空格。
public class Solution { public String replaceSpace(StringBuffer str) { String result = str.toString(); if(result.contains(" ")){ while(str.indexOf(" ") != str.lastIndexOf(" ")){ int index = str.indexOf(" "); str.replace(index,index+1,"%20"); } int index = str.indexOf(" "); str.replace(index,index+1,"%20"); result = str.toString(); return result; }else{ return result; } } }
结果为17ms,13012k.
方法二
后来发现StringBuffer的indexOf方法找不到时返回值为-1,那么直接使用-1
来做判断代码简单很多。
public class Solution { public String replaceSpace(StringBuffer str) { int index = str.indexOf(" "); while(index != -1){ str.replace(index,index+1,"%20"); index = str.indexOf(" ",index); } String result = str.toString(); return result; } }
测试通过为18ms,8928k。(不知道时间为什么会变多)
方法三
事后查看网上的方法,不调用replace方法实现。
public class Solution { public String replaceSpace(StringBuffer str) { int n = str.length();//字符串的长度 int ii = 0;//空格的个数ii for(int i = 0;i < n;i++){ //检测空格 if(str.charAt(i)==' '){ ii++; } } int nn = 2 * ii + n;//根据空格的个数,得到新数组的长度 int index = nn -1; char[] ct = new char[nn];//新建数组 while(n > 0){ if(str.charAt(n - 1) != ' '){ //如果不是空格 ct[index--] = str.charAt(n-1); } else{ //如果是空格 ct[index--] = '0'; ct[index--] = '2'; ct[index--] = '%'; } //取下一个字符 n--; } return String.valueOf(ct);//将字符数组转为String类型后返回 } }
测试结果18ms,8744k.
相关文章推荐
- java 剑指offer 第二题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 【剑指offer】请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 剑指offer——题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- c++ 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 替换空格-请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 请实现一个函数,将一个字符串中的空格替换成“ ”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We Are Happy。
- 实现一个函数,将一个字符串中的空格替换成“ ”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We Are Happy
- 请实现一个函数,将一个字符串中的空格替换成“ ”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We Are Happy。
- 请实现一个函数,将一个字符串中的空格替换成“ ”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We Are Happy。
- 请实现一个函数,将一个字符串中的空格替换成“ ”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We Are Happy。
- [剑指offer][面试题04]实现一个函数,将字符串中的空格替换为“ ”.例如输入“we are happy.”,输出"we are happy.".