剑指offer——替换空格

题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
 
1.代码实现(java)
思路一:
 1 public class Solution {
 2     public String replaceSpace(StringBuffer str) {
 3         int count=0;
 4         for(int i=0;i<str.length();i++){
 5             if(str.charAt(i)==' '){
 6                 count++;
 7             }
 8         }
 9         int indexOld=str.length()-1;
10         int indexNew=indexOld+count*2;
11         str.setLength(indexNew+1);
12         while(indexOld>=0 && indexOld!=indexNew){
13             if(str.charAt(indexOld)==' '){
14                 str.setCharAt(indexNew--,'0');
15                 str.setCharAt(indexNew--,'2');
16                 str.setCharAt(indexNew--,'%');
17             }else{
18                 str.setCharAt(indexNew--,str.charAt(indexOld));
19             }
20             indexOld--;
21         }
22         return str.toString();
23     }
24 }

思路二:

 1 public class Solution {
 2     public String replaceSpace(StringBuffer str) {
 3         if(str==null){
 4             return null;
 5         }
 6         if(str.length()==0){
 7             return str.toString();
 8         }
 9         String s=str.toString();
10         char[] c=s.toCharArray();
11         StringBuffer sb=new StringBuffer();
12         int len=c.length;
13         for(int i=0;i<len;i++){
14             if(c[i]==' '){
15                 sb.append("%20");
16             }else{
17                 sb.append(c[i]);
18             }
19         }
20         return sb.toString();
21     }
22 }

 

2.代码实现(C/C++)

 1 class Solution {
 2 public:
 3     void replaceSpace(char *str,int length) {
 4         if(str==NULL || length<0){
 5             return;
 6         }
 7         int blankNum=0;
 8         for(int i=0;i<length;i++){
 9             if(str[i]==' '){
10                 blankNum++;
11             }
12         }
13         int oldLen=length;
14         int newLen=blankNum*2+length;
15         while(oldLen!=newLen){
16             if(str[oldLen]==' '){
17                 str[newLen--]='0';
18                 str[newLen--]='2';
19                 str[newLen--]='%';
20             }else{
21                 str[newLen--]=str[oldLen];
22             }
23             oldLen--;
24         }
25     }
26 };

 

posted on 2018-03-18 00:28  Joyce&wang  阅读(132)  评论(0)    收藏  举报

导航