zoukankan      html  css  js  c++  java
  • 面试题04_替换空格_剑指Offer系列

    题目描写叙述

    请实现一个函数,将一个字符串中的空格替换成“%20”。

    比如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。


    解题思路

    这样的题目从前往后扫描的话。须要移动多次。

    这样的情况下从后往前扫描。

    首先扫描一遍。找到空格的个数,算出须要加入多少个20%,即替换后的字符串的长度 = 原字符串长度 +  空格数*2

    准备两个指针一个指针p1指向当前字符串的最后位置,还有一个指针p2指向新字符串的最后位置。

    然后依次向前扫描。当遇到空格的时候。p1向前移动一个位置,p2向前移动三个位置,而且依次用20%替换。


    代码实现

    class Solution {
    public://注意:length是整个字符串的总容量 包含未占用的空间
    	void replaceSpace(char *str, int length) {
    		//首先推断边界条件,如空啥的
    		if (str == nullptr || length <= 0)
    			return;
    		int originLen = 0;
    		int numOfblank = 0;
    		int i = 0;
    		while (str[i] != '')
    		{
    			originLen++;
    			if (str[i] == ' ')
    				numOfblank++;
    			i++;
    		}
    		int newLen = originLen + numOfblank * 2; 
    		if (newLen > length)
    			return;
    		
    		while (originLen >= 0 && newLen > originLen)
    		{
    			if (str[originLen] == ' ')
    			{
    				str[newLen--] = '0';
    				str[newLen--] = '2';
    				str[newLen--] = '%';
    			}
    			else
    				str[newLen--] = str[originLen];
    			originLen--;
    		}
    	}
    };



  • 相关阅读:
    codechef Taxi Driver
    BZOJ2190 SDOI2008 仪仗队
    BZOJ 1070: [SCOI2007]修车
    BZOJ 1066 [SCOI2007]蜥蜴
    最大流模板
    表达式计算
    codechef Polo the Penguin and the Tree
    LCA 求 树中两个点的距离
    Baby Step Giant Step model
    POJ 1330 Nearest Common Ancestors (LCA,dfs+ST在线算法)
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7371421.html
Copyright © 2011-2022 走看看