【剑指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] = '\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】替换字符串中的空格的更多相关文章
- 剑指offer 替换字符串中的空格
void replaceSpace(char *str,int length) { ) return; ; ; ; while(str[originlen]!='\0') { if(str[origi ...
- 《剑指offer》字符串中的字符替换
一.题目描述 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 二.输入描 ...
- 【Java】 剑指offer(50-1) 字符串中第一个只出现一次的字符
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在字符串中找出第一个只出现一次的字符.如输入"abacc ...
- 剑指offer——替换字符串
总结:先计算出总共有多少空格,count++:然后从后往前遍历,每遇到一个空格,count--: 替换空格 参与人数:2119时间限制:1秒空间限制:32768K 通过比例:20.23% ...
- 剑指 Offer 12. 矩阵中的路径 + 递归 + 深搜 + 字符串问题
剑指 Offer 12. 矩阵中的路径 题目链接 题目类似于迷宫的搜索. 需要注意的是,需要首先判断起始搜索的位置,可能有多个起点,都需要一一尝试. 每轮迭代的时候记得将是否遍历标记数组还原为未遍历的 ...
- 【剑指Offer】字符串的排列 解题报告(Python)
[剑指Offer]字符串的排列 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...
- 剑指Offer——企业级项目中分层的含义与依据及多态的优势
剑指Offer--企业级项目中分层的含义与依据及多态的优势 关于以上两点,由于项目经验较少,自己不是很明白,特整理如下. 常见分层架构模式 三层架构 3-tier architecture 微 ...
- 剑指Offer:字符串排列【38】
剑指Offer:字符串排列[38] 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bc ...
- 剑指 Offer 38. 字符串的排列 + 无重复元素的全排列
剑指 Offer 38. 字符串的排列 Offer_38 题目描述 解题思路 可以使用递归实现全排列,每次都确定一个数的位置,当所有位置的数都确定后即表示一个排列. 但是考虑到本题需要排除重复的排列, ...
- 剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...
随机推荐
- [Angular 2] Using the @Inject decorator
TypeScript is used heavily as we build up our application, but TypeScript isn’t required. If you wan ...
- 使用代码自定义UIView注意一二三
文/CoderAO(简书作者)原文链接:http://www.jianshu.com/p/68b383b129f9著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 当一撮样式一样的视图在 ...
- 消息摘要算法-HMAC算法
一.简述 mac(Message Authentication Code.消息认证码算法)是含有密钥散列函数算法.兼容了MD和SHA算法的特性,并在此基础上加上了密钥.因此MAC算法也常常被称作HMA ...
- compass安装
修改ruby软件包的sources 国外服务器不给力,经常链接失败,换成国内淘宝的:https://ruby.taobao.org/ 先移除本有的sources gem sources --remov ...
- C# KeyValuePair<TKey,TValue>与Container
KeyValuePair<TKey,TValue> KeyValuePair<TKey,TValue>是一个结构体,相当于C#一个Map类型的对象,可以通过它记录一个键/值对 ...
- 单例模式(Singleton)详解——转载
单例模式(Singleton) 首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了, 比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个, 这里就可以通过 ...
- 先装Net Framework 后 装 IIS的处理办法
先装IIS话,后面装Net Framework时候会自动注册 处理aspx和ashx等的处理扩展程序 先装Net Framework 后 装 IIS.扩展程序注册在命令:aspnet_regiis - ...
- SQLServer 2008 R2 发布订阅配置指南
原以为配置SQLServer 2008 R2的发布订阅很简单,实际配置后才发现过程中有问题地方一直都没搞明白,最后经过几天的查找问题和实践,终于搞定了.现将过程记录如下. SQLServer 2008 ...
- 简单描述一下XIB与Storyboards,简述它们的优缺点。
参考答案: 我倾向于纯代码开发,因此所提供的参考答案可能具有一定的个人感情,不过还是给大家说说自己的想法. 优点: XIB:在编译前就提供了可视化界面,可以直接拖控件,也可以直接给控件添加约束,更直观 ...
- [总结] Stack: Java V.S. C++
小结一下Stack 的主要API操作. 在c++ 和 java 中,stack 的操作几乎相同,只有查询栈顶元素一项操作的名称不同 (top() v.s. peek()) . 此外,在构造函数中,Ja ...