剑指offer[二]:替换空格(java和c++版本)
来源:互联网 发布:什么软件可以做一寸照 编辑:程序博客网 时间:2024/06/06 13:36
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 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--; } }};
阅读全文
0 0
- 剑指offer[二]:替换空格(java和c++版本)
- 剑指offer(二) 替换空格
- 剑指offer:替换空格(java)
- (二)剑指Offer之替换空格
- 剑指offer之二---替换空格
- 剑指Offer(二)替换空格
- 剑指offer 替换空格 java实现
- JAVA实现替换空格(《剑指offer》)
- 【剑指offer-Java版】04替换空格
- 剑指offer题解【替换空格】-java
- 剑指offer-----替换空格(java版)
- 《剑指offer》004-替换空格(java实现)
- 《剑指offer》004-替换空格(java实现)
- 剑指offer:替换空格 java版
- 《剑指offer》牛客网java题解-替换空格
- 剑指offer之空格替换java
- 剑指offer--替换空格(java)
- 剑指offer-替换空格(java语言)
- HashSet与TreeSet中的等同性比较
- C++ Primer 学习笔记(第五章)
- html知识点
- 设计模式——适配器模式
- 位运算的应用
- 剑指offer[二]:替换空格(java和c++版本)
- 支付宝支付集成
- CUDA并行编程学习心得2
- 通过上下文获取bean和通过bean工厂获取bean
- 约束满足问题与线性规划问题
- Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题
- ios-ContactsUI框架简单使用
- 《机器学习基石》课程笔记(2)
- LeetCode121. Best Time to Buy and Sell Stock