• 替换字符串中空格为”%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--;
    	}
    }
    

      

  • 相关阅读:
    NOIP2017宝藏
    ARC114
    字符串乱记
    [SDOI2016]储能表
    quq
    口胡图论
    一双木棋 chess
    数论小记
    CF961G Partitions
    [HAOI2016]字符合并
  • 原文地址:https://www.cnblogs.com/cugb-2013/p/3661345.html
Copyright © 2020-2023  润新知