剑指offer面试题[4]-空格替换
题目描述
以输入hello word为例分析:
代码及相应注释如下
#include <iostream>
using namespace std;
class Solution {
public:
void replaceSpace(char *str,int length) //lengt为字符数组str的大小
{
int number_space=0;
int str_length=0;
if(str==NULL||length<=0)
return;
for(int i=0;i<length;i++)
{
if(*(str+i)==' ')
number_space++;
if(*(str+i)!='\0')
str_length++;
}
int new_str_length=str_length+number_space*2;
char *p1=str+str_length-1; //注意类型指针是字符类型, 指针p1为指向原始str的末尾最后一个字符(非‘\0’)。
char *p2=str+new_str_length-1; //指针p2为指向扩展后str的末尾最后一个位置(非‘\0’)。
for(int i=str_length-1;i>=0;i--)
{
if(*p1!=' ') //如果原始str的当前位置不为空,需要将其值赋给扩展数组
{ //相应的p1和p2都向前移动一个位置
*p2=*p1;
p1--;
p2--;
}
else //如果原始str的当前位置为空,则需要将扩招数组的连续三个元素赋为%20
{
*p2='0'; //特别需要注意的是这里的倒序输入,先0再2最后%
*(p2-1)='2';
*(p2-2)='%';
p1--;
p2=p2-3; //注意这里3
}
}
}
};
//主函数
void main()
{
char str[20]={"hello world"}; //注意这里的str大小一定要大于等于替换后的大小
int length=12;
Solution s;
s.replaceSpace(str,length);
cout<<str<<endl;
}
方法2:
/*class Solution {
public:
void replaceSpace(char *str,int length)
{
int m = 0;
for(int i = 0;i<length;i++)
{
if(*(str+i) == ' ')
{
m= i;
length += 2;
for(int j = length -1;;j--)
{
if(j -2 == m)
break;
else
*(str+j) = *(str+j-2);
}
*(str+m) = '%';
*(str+m+1)= '2';
*(str+m+2) = '0';
}
}
}
};*/
结果:
剑指offer面试题[4]-空格替换相关推荐
- 剑指offer——面试题4:替换空格
#剑指offer--面试题4:替换空格 此题的关键思路在于字符串的从后向前复制!!! class Solution { public:void replaceSpace(char *str,int l ...
- python剑指offer替换空格_迷人的算法-剑指offer面试题5:替换空格
题目:请实现一个函数,把字符串中的每个空格替换成"%20". 例如,输入"We are happy.",则输出"We%20are%20happy.&q ...
- 剑指offer系列-----item3字符串空格替换
题干: 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 这题 ...
- 【剑指Offer面试题】 九度OJ1510:替换空格
c/c++ 中的字符串以"\0"作为结尾符.这样每一个字符串都有一个额外字符的开销. 以下代码将造成内存越界. char str[10]; strcpy(str, "01 ...
- 剑指offer——面试题49:把字符串转换成整数
剑指offer--面试题49:把字符串转换成整数 Solution1: 代码写的啰嗦,但思路清晰..LeetCode上有相似的题目并考虑了溢出,可以参考LeetCode8答案 class Soluti ...
- 剑指offer 面试题三 找出数组中重复的数字
1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...
- [剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]
[问题描述][中等] 235/68-1 搜索二叉树 236/68-2 二叉树 [解答思路] 递归 时间复杂度:O(N) 空间复杂度:O(N) 情况 1. , 2. , 3. , 4. 的展开写法如下. ...
- [剑指offer]面试题第[57]题[Leetcode][第167题][JAVA][和为s的两个数字][两数之和][HashSet][二分][双指针]
[剑指offer]面试题第[57]题[Leetcode][第167题][第1题] 有序无序之分 题目输出不同之分 以下解法按照[剑指offer]面试题第[57]题进行题解 [问题描述][简单] 输入一 ...
- 两个数组中对应的下标的值合成一个新的数组_剑指 offer 面试题精选图解 03 . 数组中重复的数字
今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...
最新文章
- php增删改查前后端分离,前后端分离之前端增删改查
- Warning: Each child in a list should have a unique “key“ prop.
- [转]linux文件同步工具Unison的使用
- linux判断目录,文件存在等
- linux命令历史详解
- WINCE6.0深入理解TOC
- 编译成功但链接失败的原因
- HTML5 Canvas 绘制旋转45度佛教万字
- 阿里妈妈技术团队5篇论文入选 SIGIR 2022!
- Python中的append()和extend()
- 数据库实验四 用户权限管理
- 如何在linux上创建数据库,在LINUX平台上手动创建数据库(oracle 10g)
- java第十四次作业
- ggbiplot设置分组_prcomp和ggbiplot:无效的’rot’值
- 如何成为Emacs高手,像神一样使用编辑器
- C++builder应用程序设计流程
- Jpeg怎么变成jpg格式?教你三步快速转换格式
- 实现调用阿里云API第一章——API请求与认证
- 被蠢人、穷人与聪明人放弃的“概率权”
- MySql只能用localhsot或者127.0.0.1连接
热门文章
- 解决flash的虚框问题
- 4-2 数据模型的生成
- 腾讯内部转岗_别了,腾讯微博!
- c++ enum 给定类型_C++ 枚举类型详解
- 如何java面试_短时间如何过java面试?
- mysql2005安装asp_asp连接sql server2005数据库
- VLD(Visual LeakDetector)内存泄露工具的使用
- C++类的构造函数、析构函数与赋值函数
- 机器视觉:偏振片应用
- Halcon例程学习:print_check.hev(光学字符检测)