zoukankan      html  css  js  c++  java
  • {面试题4: 替换空格}

    From 剑指Offer 何海涛 著

    #include <iostream>
    #include <cstring>
    
    void replaceBlank(char *str, int length) {
        if(str != NULL && length > 0) {
            int numberOfBlank = 0;
            int originLength = 0;
            while(str[originLength] != '') {
                if(str[originLength++] == ' ') {
                    numberOfBlank++;
                }
            }
            int newLength = originLength + (numberOfBlank<<1);
            if(newLength <= length) {
                int indexOfOrigin = originLength;
                int indexOfNew = newLength;
                while(indexOfOrigin < indexOfNew) {
                    if(str[indexOfOrigin] == ' ') {
                        str[indexOfNew--] = '0';
                        str[indexOfNew--] = '2';
                        str[indexOfNew--] = '%';
                    } else {
                        str[indexOfNew--] = str[indexOfOrigin];
                    }
                    indexOfOrigin--;
                }
            }
        }
    }

    测试集:

    void test(char *str, int length, char *expected) {
        std::cout << std::boolalpha << (replaceBlank(str, length), str != NULL && expected != NULL && strcmp(str, expected) == 0 ? true : str == expected) << std::endl;
    }
    
    int main(int argc, char* argv[]) {
    
        char str1[32] = "";
        char str2[32] = "   ";
        char str3[32] = "Hello World!";
        char str4[32] = " HelloWorld!";
        char str5[32] = "HelloWorld! ";
        char str6[32] = "Hello  World!";
    
        test(NULL, 0, NULL);
        test(str1, 16, "");
        test(str2, 32, "%20%20%20");
    
        test(str3, 32, "Hello%20World!");
        test(str4, 32, "%20HelloWorld!");
        test(str5, 32, "HelloWorld!%20");
    
        test(str6, 32, "Hello%20%20World!");
    
        retur 0;
    
    }
  • 相关阅读:
    socket通信原理
    socket通信基础内容
    内核中断过程
    爬虫基础模块
    关于多个运算符的问题
    前戏
    js扩展
    加密
    django之form
    Django
  • 原文地址:https://www.cnblogs.com/long3216/p/4439095.html
Copyright © 2011-2022 走看看