剑指Offer05题(字符串)

2021/7/19 23:09:49

本文主要是介绍剑指Offer05题(字符串),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

  1. 第一种解法就是中规中矩地遍历数组,用一个额外的数组来装新的字符串。
char* replaceSpace(char* s){
    int count = 0;
    for (int i = 0; i < strlen(s); i++) {
        if (s[i] == ' ')
            count++;
    }
    char* ans = (char*)malloc(sizeof(char) * (strlen(s) + count * 2 + 1));
    int i = 0, j = 0;
    while (i < strlen(s)) {
        if (s[i] != ' ') {
            ans[j] = s[i];
            i++, j++;
        } else {
            ans[j] = '%';
            ans[j + 1] = '2';
            ans[j + 2] = '0';
            i++, j += 3;
        }
    }
    ans[j] = '\0';
    return ans;
}
  1. 题解用的C++,C++中的字符串有一些对应的方法,处理起来比C要方便不少。使用C++的话可以先将字符串扩充到所需要的大小,然后用两个指针,一个i指向原来字符串的末尾,一个j指向扩充后字符串的末尾,然后往前移动,如果i遇到字符就将i指向的字符赋给j指向的地方,然后i和j同时往前移动一个元素的距离;如果i遇到空格的话,就让j往前写%20这三个字符,然后j往前移动到%字符处(即移动两个元素的距离),再跟i一起往前移动一格;当i和j想错或相遇时,循环就结束,新的字符串也产生了。


这篇关于剑指Offer05题(字符串)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程