【剑指offer】2:替换空格
题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路:
解法一:
可以直接采用内置的字符串的方法(JavaScript)进行求解,代码如下
function replaceSpace( s ) { // write code here var result = s.replace(/ /g, "%20"); return result; }
解法二:
观察题目发现,“%20”与“ ”相比多占了两个字符,所以我们第一步先是要求出新的字符串长度,对字符串进行遍历,记录空格数量,空格数量的两倍加上原本字符串的长度就是新的字符串长度;第二步,对于原字符串再次遍历,将“%20”依次插入空格处即可。
代码实现:
C语言
char* replaceSpace(char* s ) { // write code here if (s == NULL) { //字符串为空,返回空 return NULL; } int numBlank = 0; //记录空格数量 int len = strlen(s); //初始字符串长度 for (int i = 0; i < len; i++) { if (s[i] == ' ') { numBlank++; //字符串中空格数量 } } int newLen = len + numBlank * 2; //新的字符串长度 char *result = (char *)malloc(newLen); //为新字符串分配空间 for (int i = 0, j = 0; i < len; i++) { //遍历原字符串 if (s[i] == ' ') { //匹配空格,将%20依次插入 result[j++] = '%'; result[j++] = '2'; result[j++] = '0'; } else { //不是空格,将原字符串赋给新分配的内存 result[j++] = s[i]; } } return result; }