剑指 Offer 05. 替换空格(C语言)
剑指 Offer 05. 替换空格(C语言)
1. Title
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例:
,,,
详情:点击这里
2. Do it
2.1. version 0.1(success)
/*!
* @file 05replaceSpace.c
* @date 2021-08
* @version 0.1
* @author forbit
* @brief 创建新的数组,在空格的地方使用新的填充
* @details score 0-4ms 5.5MB 空间复杂度:O(数组长度*2),时间复杂度:O(1)
*/
char* replaceSpace(char* s){
/*!
* @brief
* @param[in] s 字符串
* @return 字符串指针
*/
int happend_number = 0; //!< 表示空格出现次数
//! 计算数组空格的数量
for(int i=0; i<strlen(s); i++)
if(s[i] == 32) //! 字符串空格对应的ASCII码的十进制是32
happend_number++;
//! 计算数组长度,创建数组。
//! 多出来的1是用于存放0,表示字符串结束。
int s_new_length = strlen(s) + happend_number*2 + 1; //!< 表述字符长度
char s_new[s_new_length]; //!< 表示新字符串
int j = 0; //!< 用于循环中跟踪新字符串的下标
char *p; //!< 表示返回的指针
for(int i=0; i<strlen(s); i++){
if(s[i] == 32){ //! 判断数组是否为空格
s_new[j] = 37; j++; //! 表示字符%
s_new[j] = 50; j++; //! 表示字符2
s_new[j] = 48; //! 表示字符0
}else s_new[j] = s[i];
j++;
}
s_new[s_new_length-1] = 0; //! 表示字符串结束
p = &s_new;
return p;
}

浙公网安备 33010602011771号