剑指Offer02 替换空格

 1 /*************************************************************************
 2     > File Name: 02_Replace_Blank.c
 3     > Author: Juntaran
 4     > Mail: [email protected]
 5     > Created Time: 2016年08月24日 星期三 01时28分33秒
 6  ************************************************************************/
 7
 8 #include <stdio.h>
 9
10 void ReplaceBlank(char* str)
11 {
12     if (str==NULL)
13     {
14         return;
15     }
16
17     int blankCount = 0;
18     int alphaCount = 0;
19     int i = 0;
20     while (str[i] != ‘\0‘)
21     {
22         if (str[i] == ‘ ‘)
23             blankCount ++;
24         alphaCount ++;
25
26         i ++;
27     }
28     printf("alphaCount is %d\n", alphaCount);
29     printf("blankCount is %d\n", blankCount);
30
31     int newLength = alphaCount + 2*blankCount;
32     printf("newLength is %d\n", newLength);
33     int p1 = alphaCount + 1;
34     int p2 = newLength + 1;
35     while (p1>=0 && p2>p1)
36     {
37         if (str[p1] == ‘ ‘)
38         {
39             str[p2--] = ‘0‘;
40             str[p2--] = ‘2‘;
41             str[p2--] = ‘%‘;
42         }
43         else
44         {
45             str[p2--] = str[p1];
46         }
47         p1 --;
48     }
49 }
50
51 int main()
52 {
53     char str[] = "We are Happy!";
54     printf("Before: %s\n", str);
55     ReplaceBlank(str);
56     printf("After: %s\n", str);
57 }
时间: 2024-10-12 16:18:46

剑指Offer02 替换空格的相关文章

剑指Offer-2.替换空格(C++/Java)

题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 题意明确,就是将一个字符串中的每个空格替换成“%20”,可以新建一个空字符串,遍历原字符串,遇到空格就添加“%20”,否则就将字符添加进新串中. 不过这种方法需要额外的空间,我们可以在原字符串上进行操作. 如果从头开始遍历字符串,遇到空格将其替换成为“%20”,需要将后面的字符进行后移操作,时间复杂度很高. 所以我们可以先

[剑指OFFER] 替换空格

题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 个人理解,应该是对空间复杂度有要求,如果没有要求,下面code就OK class Solution { public: string replaceSpace(string str) { string rtn; for(int i = 0; i < str.size(); i++) { if(str[i] == ' ') r

剑指offer替换空格

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 class Solution { public:     string replaceSpace(string str) {         stack<int> Mystack;     int length=str.length();     in

剑指offer——替换字符串

总结:先计算出总共有多少空格,count++:然后从后往前遍历,每遇到一个空格,count--: 替换空格 参与人数:2119时间限制:1秒空间限制:32768K 通过比例:20.23% 最佳记录:0 ms|8552K(来自  牛客游客) 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 完整代码: public class StringreplaceSpace { public

【剑指offer】空格替换

Question 设计一种方法,将一个字符串中的所有空格替换成 %20 .你可以假设该字符串有足够的空间来加入新的字符,且你得到的是"真实的"字符长度. Solution 1 需要额外的一个数组: class Solution { public: /** * @param string: An array of Char * @param length: The true length of the string * @return: The true length of new st

剑指offer—替换字符串中空格

题目: 实现一个函数,把字符串中的每个空格替换成"%20".加入输入"we are happy.",则输出"we%20are%20happy.". 时间复杂度为O(n^2) 基本思想:从前往后把字符串中的空格替换成%20. 假设字符串的长度为n,对每个空格字符,需要移动后面O(n)个字符,因此总的时间复杂度为O(n^2). 时间复杂度为O(n) 基本思想:先遍历找出空格总数,并计算出替换之后的字符串的总长度.然后从字符串的后面开始复制和替换. 所

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

void replaceSpace(char *str,int length) { if(str==NULL||length<=0) return; int originlen=0; int newlen=0; int space=0; while(str[originlen]!='\0') { if(str[originlen]==' ') space++; originlen++; } originlen++; newlen=originlen+2*space; if(originlen==

剑指offer02

package jianzhiOffer; /*  * 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.  * 则经过替换之后的字符串为We%20Are%20Happy.  */ public class ch02 { public static void main(String[] args) { // String str = "We Are Happy"; // String newStr = myReplace

剑指offer---02---替换空格---string

题意 将空格替换成'%20' 分析 代码 public class Solution { public String replaceSpace(StringBuffer str) { StringBuffer s = new StringBuffer(); char[] ch = str.toString().toCharArray(); for(char c : ch){ if(c!=' ')s.append(c); else s.append("%20"); } return s.