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



  • 相关阅读:
    win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
    JQUERY UI Datepicker Demo
    Official online document, install svn server in centOS
    JAVE not work in linux
    AMR 转mp3 失败
    XD, XR, DR 股票
    Linux 下MySql 重置密码
    Difinition Of Done
    Apache, Tomcat, JK Configuration Example
    Linux 安装tomcat
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7371421.html
Copyright © 2011-2022 走看看