首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新鲜出炉的阿里地区2013年实习笔试题2道

2013-06-25 
新鲜出炉的阿里2013年实习笔试题2道。第一题,T(n)0,n1T(2n)1+T(n/2)+n*n求复杂度。第二题。写一个程序

新鲜出炉的阿里2013年实习笔试题2道。
第一题,
T(n)=0,n<=1;
T(2n)=1+T(n/2)+n*n;
求复杂度。

第二题。
写一个程序实现下面转化:
输入"www.taobao.com"这样一个字符串,转化为“com.taobao.www”,

或者“sports.sina.com.cn”转为为"cn.com.sina.sports".


忘大神们前来讨论。。有点不会!
[解决办法]

[root@vps616 cpp]# ./main 
[www.baidu.com] -> [com.baidu.www]
[www.qq.com] -> [com.qq.www]
[client.baidu.com] -> [com.baidu.client]
[cdn.youku.com] -> [com.youku.cdn]
[www.taobao.com] -> [com.taobao.www]
[sports.sina.com.cn] -> [cn.com.sina.sports]
[] -> []
[abc] -> [abc]
[abc.1] -> [1.abc]
[abc.23] -> [23.abc]
[root@vps616 cpp]# cat main.cpp 
#include <stdio.h>
#include <stdlib.h>

static inline void _do_string_reverse(char *str, int len)
{
    char *beg = str;
    char *end = str + len - 1;
    for ( ; beg < end; ++beg, --end) {
        char temp = *beg;
        *beg = *end;
        *end = temp;
    }
}

int string_reverse(char *str, const char token)
{
    if (!str 
[解决办法]
 token == '\0')
        return -1;
    
    int wbeg, wend;
    for (wbeg = wend = 0; str[wend]; ++wend) {
        if (str[wend] == token) {
            _do_string_reverse(str + wbeg, wend - wbeg);
            wbeg = wend + 1;
        }
    }
    _do_string_reverse(str + wbeg, wend - wbeg);
    _do_string_reverse(str, wend);

    return 0;
}

int main(int argc, char *const argv[])
{
    char test_cases[][64] = {
        "www.baidu.com", "www.qq.com", "client.baidu.com",
        "cdn.youku.com", "www.taobao.com", "sports.sina.com.cn",
        "", "abc", "abc.1", "abc.23"
    };

    int i;
    for (i = 0; i < (int)(sizeof(test_cases) / sizeof(test_cases[0])); ++i) {


        printf("[%s] -> ", test_cases[i]);
        string_reverse(test_cases[i], '.');
        printf("[%s]\n", test_cases[i]);
    }
    return 0;
}


[解决办法]
第二题2楼已经给出正确代码了,有啥好讨论的
第一题看不懂,是不是出错了?如果没错n只能是2^k,这个结果就是logn了

热点排行