• 【剑指offer】替换字符串中的空格


    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25002199


        剑指offer上的第四道题目,在九度OJ上測试通过,但还是有些问题。由于是用C语言实现的,因此,要提前开辟一个比較大的空间来存储输入的字符串。而假设在线測试系统的測试用例中字符串的长度大于该最大值的话。会报RE,可是九度OJ的測试用例没有大于我所设定的字符串的最大值。当然,这道题目用C++中的string类或java中的String类实现会更好,不须要操心输入字符串的长度。



    时间限制:1 秒

    内存限制:128 兆

    题目描写叙述:

    请实现一个函数,将一个字符串中的空格替换成“%20”。比如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

    输入:

    每一个输入文件仅包括一组測试例子。
    对于每组測试案例。输入一行代表要处理的字符串。

    输出:

    相应每一个測试案例。出经过处理后的字符串。

    例子输入:
    We Are Happy
    例子输出:
    We%20Are%20Happy
    AC代码:

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>;
    
    char *ReplaceBlank(char *str)
    {
    	if(str == NULL)
    		return NULL;
    	int len = strlen(str);
    	if(len == 0)
    		return NULL;
    	int i,count = 0;
    	for(i=0;i<len;i++)
    		if(str[i] == ' ')
    			count++;
    	//没有空格,就直接返回str
    	if(count == 0)
    		return str;
    	int new_len = 2*count+len+1;
    	char *dest = (char *)malloc(new_len*sizeof(char));
    	if(dest == NULL)
    		exit(EXIT_FAILURE);
    	int j = 0;
    	for(i=0;i<len;i++)
    	{
    		if(str[i] != ' ')
    		{
    			dest[j++] = str[i];
    		}
    		else
    		{
    			dest[j] = '%';
    			dest[j+1] = '2';
    			dest[j+2] = '0';
    			j += 3;
    		}
    	}
    	dest[j] = '';
    	return dest;
    }
    
    int main()
    {
    	//尽管AC了(主要九度的測试用例没有大于这个范围的)。可是人为地限制str的长度并非最佳的方法。
    	//最好使用C++中的string类或java中的String类。
    	//但眼下在C语言中,我还不知道怎么能够不限定长度地从键盘接受输入的字符串。

    static char str[10000000]; gets(str); char *dest = ReplaceBlank(str); if(dest != NULL) puts(dest); free(dest); dest = NULL; return 0; }

    /**************************************************************
        Problem: 1510
        User: mmc_maodun
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:10976 kb
    ****************************************************************/

  • 相关阅读:
    DFS+剪枝:N个蛋放入M个篮子并可以任意取
    笔试题:二叉树按层遍历&添加兄弟指针&求LCA&排序二叉树的查找
    Windows下部署BigBlueButton
    Gcc 下 MAX/MIN的安全宏定义
    Java NIO 笔记
    C++高效编程:内存与性能优化
    <<<EOT分界符怎么用?
    查询语句中不区分大小写和区分大小写及其模糊查询 的语句
    APPCAN本地打包时报有中文字符错误
    PHP中::、>、self、$this操作符的区别
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5230971.html
Copyright © 2020-2023  润新知