转载请注明出处: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] = '\0';
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
****************************************************************/

【剑指offer】替换字符串中的空格的更多相关文章

  1. 剑指offer 替换字符串中的空格

    void replaceSpace(char *str,int length) { ) return; ; ; ; while(str[originlen]!='\0') { if(str[origi ...

  2. 《剑指offer》字符串中的字符替换

    一.题目描述 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 二.输入描 ...

  3. 【Java】 剑指offer(50-1) 字符串中第一个只出现一次的字符

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 在字符串中找出第一个只出现一次的字符.如输入"abacc ...

  4. 剑指offer——替换字符串

    总结:先计算出总共有多少空格,count++:然后从后往前遍历,每遇到一个空格,count--:       替换空格 参与人数:2119时间限制:1秒空间限制:32768K 通过比例:20.23% ...

  5. 剑指 Offer 12. 矩阵中的路径 + 递归 + 深搜 + 字符串问题

    剑指 Offer 12. 矩阵中的路径 题目链接 题目类似于迷宫的搜索. 需要注意的是,需要首先判断起始搜索的位置,可能有多个起点,都需要一一尝试. 每轮迭代的时候记得将是否遍历标记数组还原为未遍历的 ...

  6. 【剑指Offer】字符串的排列 解题报告(Python)

    [剑指Offer]字符串的排列 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...

  7. 剑指Offer——企业级项目中分层的含义与依据及多态的优势

    剑指Offer--企业级项目中分层的含义与依据及多态的优势   关于以上两点,由于项目经验较少,自己不是很明白,特整理如下. 常见分层架构模式 三层架构 3-tier architecture   微 ...

  8. 剑指Offer:字符串排列【38】

    剑指Offer:字符串排列[38] 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bc ...

  9. 剑指 Offer 38. 字符串的排列 + 无重复元素的全排列

    剑指 Offer 38. 字符串的排列 Offer_38 题目描述 解题思路 可以使用递归实现全排列,每次都确定一个数的位置,当所有位置的数都确定后即表示一个排列. 但是考虑到本题需要排除重复的排列, ...

  10. 剑指 Offer 38. 字符串的排列

    剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...

随机推荐

  1. 在Unity中使用Shader

    1.Material 和 Shader 的关系.一个材质包括一个Shader程序.在Shader中设置的属性能够通过Material可视化设置 2.内建Shader,在5.0之后的版本号中大部分旧的S ...

  2. C# 异步和委托学习

    IAsyncResult是接口: IAsyncResult 异步设计模式通过名为 BeginOperationName 和 EndOperationName 的两个方法来实现原同步方法的异步调用,如 ...

  3. 使用Express创建一个简单的示例

    1.安装Express 使用npm包安装工具来安装Express安装包,打开npm命令行,输入: npm install -g express 2.创建一个工程 本示例是在windows下创建的,项目 ...

  4. ashx ajax 与 自定义javascript函数

    1.getUserPower为自定义javascript函数 获取权限  (1).ashx 处理程序的相对地址(必须是相对地址)  (2).au 权限名称  (3).classname 类名  (4) ...

  5. java下的第一个redis

    Redis支持很多编程语言的客户端,有C.C#.C++.Clojure.Common Lisp.Erlang.Go.Lua.Objective-C.PHP.Ruby.Scala,甚至更时髦的Node. ...

  6. android布局常用属性记录

    android布局常用属性记录   http://blog.csdn.net/xn4545945/article/details/7717086这里有一部分别人总结的其余的: align:对齐 par ...

  7. Spring AOP之异常转换

    Spring-AOP之异常转换 引子 最近项目遇到了一个问题,就是说业务层向展现层需要转换成统一个异常类,并抛出异常,但是由于业务层的异常类过多,所以导致业务异常转换代码充斥着异常转换的代码,本着程序 ...

  8. jquery.BannerRotator.js

    项目地址:https://github.com/snipertulip/BannerRotator 演示地址:http://snipertulip.github.io/BannerRotator/de ...

  9. DOM事件相关内容

    一.事件流 事件流描述的是从页面中接受事件的顺序.IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流1.事件冒泡事件冒泡,事件最开始由最具体触发事件的元素(文档中嵌套层次最深的那个节点) ...

  10. Linux中重命名文件

    linux下重命名文件有两种方式: 1.较简单的处理命令:mv mv 原文件名 新文件名 如:mv myFile newName 将MyFile重命名为newName. 2.linux提供了一个重命名 ...