剑指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) 收藏 举报
浙公网安备 33010602011771号