zoukankan      html  css  js  c++  java
  • 替换字符串中空格为”%20“

    TIPS:‘%20’有三个字符构成,遍历直接替换的话需要增加字符串的空间,然后进行移位和替换,因此,先计算空格数目,直接算好替换后需要空间,然后从尾部开始遍历。

    算法流程:

    遍历字符串,记录下有多少个空格;

    从字符串尾部重新解析:

      (1) 如果当前字符为空格,在写入字符串'%20'

      (2) 非空格则直接记录。

    /*
    * length为字符数组的容量
     */
    private static void replaceBlank(char[] string, int length) {
    	if (string==null||length==0) {
    		return;
    	}
    	//originalLength为字符的总长度
    	int originalLength=0;
    	int blankLength=0,index=0;//空格的个数
    	while (string[index]!='') {
    		originalLength++;
    		if (string[index]==' ') {
    			blankLength++;
    		}
    		++index;
    	}
    	//替换后的长度
    	int newLength=originalLength+blankLength*2;
    	if (newLength>length) {
    		return;
    	}
    	//从后往前,依次复制原始串中字符,并将空格替换为"20%"
    	int indexOfNew=newLength;
    	int indexOfOriginal=originalLength;
    	while (indexOfOriginal>=0&&indexOfNew>indexOfOriginal) {
    		if (string[indexOfOriginal]==' ') {
    			string[indexOfOriginal--]='0';
    			string[indexOfOriginal--]='2';
    			string[indexOfOriginal--]='%';
    		}
    		else {
    			string[indexOfNew--]=string[indexOfOriginal];
    		}
    		indexOfOriginal--;
    	}
    }
    

      

  • 相关阅读:
    1740-约数之和
    1653-南邮的面积
    1880-A. 偷吃可耻
    1429-全排列的输出
    1342-皇后控制问题
    1340-逆矩阵问题
    1319-n皇后问题
    1221-最少硬币问题
    1219-整数因子分解问题
    linux 命令小结
  • 原文地址:https://www.cnblogs.com/cugb-2013/p/3661345.html
Copyright © 2011-2022 走看看