zoukankan      html  css  js  c++  java
  • 替换空格

    以前我总是通过文件来输入测试用例,但是等到再看代码的时候总是不知道关键的步骤在哪里,也不知道是哪个数据出错了;用下面这种方法很方便;

    一本书有言道“如果应聘者是先写单元测试用例,再写解决问题的函数,我相信面试官定会对你刮目相看,因为能做到测试在前、开发在后的程序员实在是太稀缺了,他会毫不犹豫地抛出绿色的橄榄枝。

    #include <iostream>
    #include <string.h>
    
    //不要只顾算法 也要考虑限制条件 
    using namespace std;
    void replaceBlank(char * str)
    {
        
        if(str == NULL)
            return ;
        //下面计算字符串的长度;
        //下面计算空格的个数;
    
        int len = 0;
        int numberOfBlank = 0;
        for(int i=0;str[i]!=0;i++) 
        {
            if(str[i]==' ')
                 numberOfBlank++;
             len++;
        }
        if(len == 0)
            return ;
    //    //2015年3月10日 09:16:532015年3月10日 09:17:032015年3月10日 09:17:062015年3月10日 09:17:082015年3月10日 09:17:092015年3月10日 09:17:12
    //    printf("%s %d
    ",str,len); 
        //计算最终字符串长度;
        int newLen = len + 2 * numberOfBlank;//包括结尾符号; 
        //下面开始从尾到头进行移动,直到两个下标一样的时候为止;
        str[newLen] = 0;
        int indexOfOld = len - 1 , indexOfNew = newLen - 1;
        
        while(indexOfOld != indexOfNew)
        {
            if( str[indexOfOld] != ' ')
            {
                str[indexOfNew] = str[indexOfOld];    
            }else{
                str[indexOfNew] = '0';
                str[--indexOfNew] = '2';
                str[--indexOfNew] = '%';
            }
            indexOfNew --;
            indexOfOld --;    
    
        }     
    }
    void Test(char * testNumber,char * oringialString,char * expectedString)//用来测试replaceBlank函数,由测试用例调用,而调用replaceBlank; 
    {
        replaceBlank(oringialString);
        //printf("%s
    ",oringialString);
        printf("%s ",testNumber);
        if(oringialString == NULL && expectedString == NULL)
            printf("passed
    ");
        else
            
            if(strcmp(oringialString,expectedString) == 0)
                printf("passed
    ");
            else
                printf("failed
    ");
    } 
    void test1()
    {
        const int len = 100;
        char str[len] = "helloWorld";
        Test("test1",str,"helloWorld");
    }
    void test2()
    {
        const int len = 100;
        char str[len] = " helloWorld";
        Test("test2",str,"%20helloWorld");
    }
    void test3()
    {
        const int len = 100;
        char str[len] = "helloWorld ";
        Test("test3",str,"helloWorld%20");
    }
    void test4()
    {
        const int len = 100;
        char str[len] = "hello World";
        Test("test4",str,"hello%20World");
    }
    void test5()
    {
        const int len = 100;
        char str[len] = "hello  World";
        Test("test5",str,"hello%20%20World");
    }
    void test6()
    {
        const int len = 100;
        char str[len] = "hello  Wor ld";
        Test("test6",str,"hello%20%20Wor%20ld");
    }
    void test7()
    {
        const int len = 100;
        Test("test7",NULL,NULL);
    }
    void test8()
    {
        const int len = 100;
        Test("test8","","");
    }
    int main()
    {
        /**/
        test1();
        test2();
        test3();
        test4();
        test5();
        test6();
        test7();
        test8();
        return 0;
    }
  • 相关阅读:
    JavaScript内置对象
    微信小程序:实现可拖动悬浮图标(包括按钮角标的实现)
    项目1——博客系统
    在HTML中使用css3实现雪人动画效果
    Ajax请求后台发送String类型总是进入Error function解决办法总结
    原生js实现图片懒加载
    【Electron Playground 系列】自定义协议篇
    大规格文件的上传优化
    如何优雅的在react-hook中进行网络请求
    noip2008 双栈排序
  • 原文地址:https://www.cnblogs.com/dragonfive/p/4334102.html
Copyright © 2011-2022 走看看