剑指Offer之替换空格
2014-09-03 18:20
225 查看
本身难度并不大,java一个replace();就可以了,或者另外开辟一个String,遍历一遍也是可行的,但是出发点并不是A题,而是考虑性能,程序在空间还有时间上的使用以及程序的鲁棒性,不过九度上的测试数据还真是大char数组要开到10^6次方。
普通的就不说了,介绍一下书中的方法。
假设str="We Are Happy";设置两个指针p1,p2。初始化为0.p1指的是原长度,p2指的是替换空格之后的。遍历一遍如果不算'\0'结尾符的话,p1=12,p2=16;
然后进行赋值操作,将p1指向的元素赋给p2,p1--,p2--。直到p1遇到一个空格,此时将“%20”插入到p2之前,p2-=3.p1--。重复操作,直到p1==p2。说明不再有空格。
其中C是上述方法,c++是另外开辟一个string。
java:
c++:
c:
普通的就不说了,介绍一下书中的方法。
假设str="We Are Happy";设置两个指针p1,p2。初始化为0.p1指的是原长度,p2指的是替换空格之后的。遍历一遍如果不算'\0'结尾符的话,p1=12,p2=16;
然后进行赋值操作,将p1指向的元素赋给p2,p1--,p2--。直到p1遇到一个空格,此时将“%20”插入到p2之前,p2-=3.p1--。重复操作,直到p1==p2。说明不再有空格。
其中C是上述方法,c++是另外开辟一个string。
java:
import java.util.Scanner; public class Main { public static void main(String[] arges) { Scanner in = new Scanner(System.in); while (in.hasNextLine()) { String str = null; str = in.nextLine(); System.out.println(str.replace(" ", "%20")); } } }
c++:
#include <stdio.h> #include <iostream> #include <string> #include <string.h> using namespace std; int main() { //freopen("/Users/sanyinchen/Workspaces/oc/conse/B_ali/B_ali/in.txt","r",stdin); string templet="%20"; char str[1000000]; int n; while(gets(str)) { getchar(); string s=""; n=strlen(str); for(int i=0;i<n;i++) { if(str[i]==' ') { s+=templet; } else { s+=str[i]; } } cout<<s<<endl; } return 0; }
c:
#include <stdio.h> int main() { //freopen("/Users/sanyinchen/Workspaces/oc/conse/B_ali/B_ali/in.txt","r",stdin); char str[1000000]; int p1,p2; while(gets(str)) { //getchar(); p1=0; p2=0; for(int i=0;str[i]!='\0';i++) { p1++; p2++; if(str[i]==' ') p2+=2; } while(p1>=0&&p1!=p2) { if(str[p1]!=' ') { str[p2]=str[p1]; p2--; p1--; } else{ str[p2--]='0'; str[p2--]='2'; str[p2--]='%'; p1--; } } printf("%s\n",str); } return 0; }
相关文章推荐
- 字符串替换空格-牛客网-剑指offer
- 剑指offer系列(3)——替换空格
- 《剑指offer》——替换空格
- 《剑指offer》-替换空格
- 《剑指Offer》之替换空格
- 剑指Offer(2)替换空格
- 《剑指offer》-将一个字符串中的空格替换成“%20”
- python实现剑指offer系列2:字符串空格替换
- 《剑指offer》5.替换空格
- 《剑指offer》面试题4 替换空格为%20
- 剑指offer(二) 替换空格
- 《剑指offer》004-替换空格(java实现)
- 剑指offer系列之二:字符串空格替换
- 《剑指Offer》替换空格(将字符串中的空格替换为%20)
- 《剑指Offer》学习笔记——替换空格
- 剑指offer:替换空格
- 剑指offer-替换空格
- 剑指Offer系列-面试题4:替换空格
- 剑指offer(3):替换空格