zoukankan      html  css  js  c++  java
  • C++版

    面试题4:替换空格


    提交网址: http://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155


    参与人数:10327 时间限制:1秒 空间限制:32768K
    本题知识点:字符串

    题目描述


    请实现一个函数void replaceSpace(char *str,int length),将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。


    分析:


    AC代码

    文件名: AimedAtOffer-replaceSpace.cpp

    #include<iostream>
    #include<string>
    #include<cstdio>
    using namespace std;
    
    class Solution{
    public:
    void replaceSpace(char *str, int length)
    {
    	if(str==NULL || length<=0) return;
    	
    	int newlen=0;
        int spaceCount = 0;
        int idx;
        for(idx = 0; str[idx] != ''; idx++)
    	{
            if (str[idx] == ' ')
    		{
                spaceCount++;
            }
        }
        newlen = idx + 2*spaceCount;
        if(newlen > length) return;
        str[newlen]='';  //此行很关键 
        int frontCur = idx - 1, backCur = newlen-1;
        for(; frontCur >= 0 && backCur > frontCur; frontCur--)
    	{
            if (str[frontCur] == ' ')
    			{
                str[backCur--] = '0';
                str[backCur--] = '2';
                str[backCur--] = '%';
            	}
    		else str[backCur--] = str[frontCur];
        }
    }
    };
    
    // 以下为测试部分
    /*
    int main()
    {
    	Solution sol;
    	char str[]="Hello World, haha";
    	sol.replaceSpace(str, 20);
    	// printf("%s
    ",str);
    	cout<<str<<endl;	
    	return 0;
    }
    */



  • 相关阅读:
    Linux
    CUDA开发
    Linux C++
    Python
    C++
    模式识别
    Linux
    算法
    算法
    leetcode 数组,链表,跳表
  • 原文地址:https://www.cnblogs.com/enjoy233/p/10408863.html
Copyright © 2011-2022 走看看