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--;
    	}
    }
    

      

  • 相关阅读:
    人生转折点:弃文从理
    人生第一站:大三暑假实习僧
    监听器启动顺序和java常见注解
    java常识和好玩的注释
    182. Duplicate Emails (Easy)
    181. Employees Earning More Than Their Managers (Easy)
    180. Consecutive Numbers (Medium)
    178. Rank Scores (Medium)
    177. Nth Highest Salary (Medium)
    176. Second Highest Salary(Easy)
  • 原文地址:https://www.cnblogs.com/cugb-2013/p/3661345.html
Copyright © 2011-2022 走看看