剑指offer-替换空格
来源:互联网 发布:根据网络安全法的规定 编辑:程序博客网 时间:2024/06/07 14:48
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路1:从前到后或从后到前进行遍历,发现空格则用“%20”替换,时间复杂度O(n^2);
思路2:先遍历数组得出空格数,增加数组有效长度,后通过两个不同的指针P1,P2一个指向原数组,一个指向增加长度后的数组,未发现空格时进行替换,发现空格时P1--,P2--三次即可。贴出代码:::
//请实现一个函数,将一个字符串中的空格替换成“%20”。//例如,当字符串为We Are Happy.则经过替换之后的字符串为//We%20Are%20Happy。#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//方法一:从尾到头获取空格处并替换//时间复杂度O(n^2)void Replace(char *str, int length){int j = 0;int len = length;int k = 0;for (int i = length - 1; i >= 0; i--){if (str[i] == ' '){//str[i] = '0';j = i;for (k = length - 1; k>j; k--){str[k + 2] = str[k];}str[j] = '%';str[j + 1] = '2';str[j + 2] = '0';length = length + 2;}}}//方法二:先遍历数组获取空格数,后通过定义两个不同指针对其进行替换。//时间复杂度:O(n)void Replace1(char str[],int length){int num = 0;int nlength = 0;int olength = length - 1;for (int i = 0; i < length; i++)if (str[i] == ' ')num++;//获取扩展后的长度nlengthnlength = olength+2 * num;//赋值操作while (olength >= 0 && nlength > olength){if (str[olength] == ' '){str[nlength--] = '0';str[nlength--] = '2';str[nlength--] = '%';}else{str[nlength--] = str[olength];}olength--;}}int main(){char str[10] = "We Are Fa";char str1[100];strcpy(str1,str);Replace1(str1,10);cout << str1 << endl;return 0;}
0 0
- [剑指offer]替换空格
- [剑指offer]替换空格
- 剑指offer:替换空格
- 替换空格--《剑指offer》
- 剑指Offer:替换空格
- 【剑指offer】替换空格
- 《剑指Offer》--替换空格
- 剑指offer--替换空格
- 【剑指offer】替换空格
- 【剑指offer】空格替换
- 剑指offer-替换空格
- 剑指offer:替换空格
- [剑指offer]替换空格
- 《剑指offer》替换空格
- 剑指offer:替换空格
- 【剑指Offer】替换空格
- 【剑指offer】-替换空格
- 剑指offer 替换空格
- 一篇文章看懂NB-IOT
- 一篇小程序的放水的文章
- tomcat+nginx+redis实现均衡负载、session共享(一)
- 【POJ 2763】Housewife Wind【LCA】
- Java:复制文件夹及子文件
- 剑指offer-替换空格
- request,response
- 数字串中找到两数之和等于已知数
- LeetCode:3. Longest Substring Without Repeating Characters
- C 生成MD5串
- 安装Opencv/VS2010显示一张图片出现的问题
- javascript学习笔记(二)
- Android 6.0获取权限
- jsp页面输入框设置为只读