【剑指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;
}

 

posted @ 2021-07-14 16:15  zhang十六  阅读(44)  评论(0编辑  收藏  举报