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;
    }
  • 相关阅读:
    高斯消元学习
    HDU 4596 Yet another end of the world(解一阶不定方程)
    Codeforces Round #318 div2
    HDU 4463 Outlets(一条边固定的最小生成树)
    HDU 4458 Shoot the Airplane(计算几何 判断点是否在n边形内)
    HDU 4112 Break the Chocolate(简单的数学推导)
    HDU 4111 Alice and Bob (博弈)
    POJ 2481 Cows(线段树单点更新)
    HDU 4288 Coder(STL水过)
    zoj 2563 Long Dominoes
  • 原文地址:https://www.cnblogs.com/dragonfive/p/4334102.html
Copyright © 2011-2022 走看看