剑指offer[二]:替换空格(java和c++版本)
2017-11-05 15:03
411 查看
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
java版本
2 . c++版本
在原本的字符指针上进行复制操作
java版本
public class Solution { /** * 暴力法的话就没意思 */ public static String replaceSpace(StringBuffer str) { /**建立两个指针,从后往前复制,首先计算好复制后的总长度 * */ int count=0; for(int i=0;i<str.length();i++){ if(str.charAt(i)==' ') count++; } int p1=str.length()-1,p2=str.length()+count*2-1; char[]s1=new char[p2+1]; System.arraycopy(str.toString().toCharArray(), 0, s1, 0, str.length()); while(p1>=0&&p2>p1){ if(s1[p1]==' '){//遇到空格 s1[p2--]='0'; s1[p2--]='2'; s1[p2--]='%'; } else{//遇到单词,则复制 s1[p2--]=s1[p1]; } p1--; //遇到空格了 } return new String(s1); } }
2 . c++版本
在原本的字符指针上进行复制操作
class Solution { public: void replaceSpace(char *str,int length) { if(str==nullptr) return; int countEmpty=0; for(int i=0;i<length;++i){ if(str[i]==' ') countEmpty++; } if(countEmpty==0) return; int resultIndex=length+2*countEmpty-1;//最后的索引 while((length-1)>=0&&resultIndex>=length){ if(str[length-1]!=' '){//遇到单词,则复制 str[resultIndex--]=str[length-1]; }else{//遇到空格 str[resultIndex--]='0'; str[resultIndex--]='2'; str[resultIndex--]='%'; } length--; } } };
相关文章推荐
- 剑指Offer面试题4(Java版),替换空格
- 剑指offer--替换空格 java实现
- 剑指offer第二题【替换空格】c++实现
- 剑指offer--替换空格(java)
- 剑指offer之空格替换java
- 剑指offer[一]:二维数组中的查找(java和c++版本)
- 剑指offer面试题4 替换空格(java)
- 剑指Offer:面试题4——替换空格(java实现)
- java 剑指offer 第二题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 剑指offer-替换空格(java语言)
- 【剑指offer-Java版】04替换空格
- 【剑指offer】面试题4:替换空格 java
- 剑指offer 面试题4 替换空格 java版答案
- 剑指offer-chapter2-面试题4-替换空格(java)
- 剑指offer(java代码)——替换空格
- 剑指offer--面试题4:替换空格--Java实现
- 剑指offer[三]:从尾到头打印链表(java和c++版本)
- 剑指offer之java篇之空格替换(一)
- 剑指offer 替换空格 java实现
- 剑指Offer——替换空格——C++