迅雷公司笔试题解

题目要求如下:

  1. 求两个绝对路径的共同深度

    函数原型:unsigned get_common_depth(const char *path1,const char *path2)

  2. 设计测试用例和函数测试上述函数

    函数原型:bool text_get_common_depth()

下面直接给出答案。

/**
 * 迅雷公司面试题解
 *
 *  i) 求两个绝对路径的共同深度。
 *     函数原型:unsigned get_common_depth(const char *path1,const char *path2)
 *
 * ii) 设计测试用例和函数测试上述函数。函数原型:bool text_get_common_depth()
 */

unsigned get_common_depth(const char *path1,const char *path2)
{
    unsigned depth = 0;
    while(path1[0] != '\0' && path2[0] != '\0')
    {
        if(*(path1++) != *(path2++))
            break;

        if(path1[-1] == '/')
            depth++;
    }
    return depth;
}

bool text_get_common_depth()
{
    if(get_common_depth("", "") != 0)
        return false;

    if(get_common_depth("/", "/") != 1)
        return false;

    if(get_common_depth("/abc", "/") != 1)
        return false;

    if(get_common_depth("/abc", "/cde") != 1)
        return false;

    if(get_common_depth("/abc/", "/") != 1)
        return false;

    if(get_common_depth("/abc/f", "/abc/g") != 2)
        return false;

    return true;
}

#include <stdio.h>

int main()
{
    if(text_get_common_depth())
        printf("get_common_depth is working well.\n");
    else
        printf("get_common_depth is NOT so good.\n");;
    return 0;
}

源码在这里下载

Creative Commons License Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 4.0 International license .