350-替换或删除空格 朴灿烈づ我的快乐病毒、 2022-09-01 14:54 117阅读 0赞 ## 1、替换空格算法 ## **将空格替换为20%** **算法1**:额外创建一个数组,如果是非空格,复制到新的数组,如果是空格,不复制,直接在新的数组中写20%。 **时间复杂度度**:O(n) **空间复杂度**:O(n) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xJTlpFWVU2NjY_size_16_color_FFFFFF_t_70] void ReplaceBlank1(char *str) { assert(str != NULL); int count = 0;//统计空格的数量 int i; for(i=0;str[i]!='\0';i++)//统计空格数量 { if(str[i] == ' ') count++; } char *buf = (char *)malloc(2*count+strlen(str)+1);//新数组 //每一个空格增加2个位置,%20 int j = 0;//buf的下标 assert(buf != NULL); for(i=0;str[i]!= '\0';i++) { if(str[i] != ' ')//非空格,直接复制 buf[j++] = str[i]; else //空格,不复制,在新数组中添加%20 { buf[j++] = '%'; buf[j++] = '2'; buf[j++] = '0'; } } buf[j] = '\0'; strcpy(str,buf);//将新数组的内容复制到原字符串中 free(buf); } **算法2**:通过计算空格数量,从后往前,直接在原字符串中修改 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xJTlpFWVU2NjY_size_16_color_FFFFFF_t_70 1] 有3个空格,所以\\0要向后移动6个位置。 void ReplaceBlank(char *str)//O(n),O(1) { int count = 0;//空格数量 for(int i=0;str[i]!='\0';i++)//统计空格的数量 { if(str[i] == ' ') count++; } //从后往前遍历字符串 int i = strlen(str);//当前需要处理的字符下标 int j = i + 2*count;//当前可以存放数据的下标 for(; i>=0; i--) { if(str[i] != ' ')//非空格,直接后移 str[j--] = str[i]; else//空格,不后移,直接在后面添加%20 { str[j--] = '0'; str[j--] = '2'; str[j--] = '%'; } } } ## 将字符串中连续的空格删除到只保留一个 ## **算法1:** **时间复杂度O(n) 空间复杂度O(n)** ![\*\*\*\*][b0b6f32245a242dcada470ee87729d2d.png] //算法1:创建一个新数组,从头到尾遍历原字符串 //如果当前不是连续空格则复制该字符,如果是则不复制 void DelBlank1(char *str)//O(n),O(n) { assert(str != NULL); char *buf = (char*)malloc(strlen(str)+1);//创建新数组 assert(buf != NULL); int i = 0;//原字符串下标 int j = 0;//新数组下标 for( ;str[i]!= '\0';i++) { if(str[i]!=' ' || str[i+1]!=' ')//非连续空格 { buf[j++] = str[i]; } } buf[j] = '\0'; strcpy(str,buf); free(buf); } **算法2:** **我们要从前往后遍历** **在原字符串中直接修改** ![在这里插入图片描述][13fbf924220f4527804cc24c6498f22e.png] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xJTlpFWVU2NjY_size_16_color_FFFFFF_t_70 2] **时间复杂度O(n) 空间复杂度O(1)** void DelBlank(char *str) { int i = 0;//当前需要处理的字符下标 int j = 0;//当前可以存放数据的下标 while(str[i]!= '\0') { if(str[i]!=' ' || str[i+1]!=' ')//非连续空格,需要复制 str[j++] = str[i++]; else //连续空格,不需要复制数据 i++; } str[j] = '\0'; } [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xJTlpFWVU2NjY_size_16_color_FFFFFF_t_70]: /images/20220829/ef17dbdc5c4f438ca4630619d64d3af4.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xJTlpFWVU2NjY_size_16_color_FFFFFF_t_70 1]: /images/20220829/b487111f930b45919dbbfd2a87766e23.png [b0b6f32245a242dcada470ee87729d2d.png]: /images/20220829/1ab1c6a4df5540738db772321286de08.png [13fbf924220f4527804cc24c6498f22e.png]: /images/20220829/5dd2fcf9a5dc4691b7dc3dd55a0f8af0.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xJTlpFWVU2NjY_size_16_color_FFFFFF_t_70 2]: /images/20220829/b2812d1e1e5f47b5a3492b6a1af03fa4.png
相关 替换空格 [https://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&&tqId=11155& 野性酷女/ 2022年11月30日 01:41/ 0 赞/ 159 阅读
相关 替换空格 \思路: 时间复杂度为o(n),从字符串的后面往前找空格然后替换,需要两个指示器指向字符串原始末尾和新增空格后的末尾。 include<stdio.h> 以你之姓@/ 2022年09月25日 12:27/ 0 赞/ 163 阅读
相关 350-替换或删除空格 1、替换空格算法 将空格替换为20% 算法1:额外创建一个数组,如果是非空格,复制到新的数组,如果是空格,不复制,直接在新的数组中写20%。 时间复杂度度:O(n) 朴灿烈づ我的快乐病毒、/ 2022年09月01日 14:54/ 0 赞/ 117 阅读
相关 替换空格 > 牛客网 《剑指offer》 > > 时间限制:`1秒` 空间限制:`32768K` 热度指数:`378402` > 本题知识点: 字符串 题目描述 请实现一个函数 ╰半夏微凉°/ 2022年06月08日 02:18/ 0 赞/ 248 阅读
相关 替换空格 [替换空格][Link 1] 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为 た 入场券/ 2022年03月25日 15:18/ 0 赞/ 279 阅读
相关 替换空格 时间限制:1秒 空间限制:32768K 热度指数:830828 本题知识点: 字符串 算法知识视频讲解 题目描述 请实现一个函数,将一个字符串中的每个空格替换成 朴灿烈づ我的快乐病毒、/ 2022年03月11日 20:29/ 0 赞/ 256 阅读
相关 替换空格 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 pub 骑猪看日落/ 2022年03月06日 03:58/ 0 赞/ 275 阅读
相关 替换空格 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 绝地灬酷狼/ 2021年12月04日 00:21/ 0 赞/ 337 阅读
相关 替换空格 替换空格 题目描述:用函数实现一个功能,把字符串中的每个空格替换成“%20”。例如,输入“We are happy.”,则输出“We%20are%20happy.”。 我们 我就是我/ 2021年11月17日 01:18/ 0 赞/ 298 阅读
相关 替换空格 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 pub 妖狐艹你老母/ 2021年09月23日 09:20/ 0 赞/ 396 阅读
还没有评论,来说两句吧...