首页 > 试题广场 >

原根

[编程题]原根
  • 热度指数:571 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给出n个只包含小写字母'a'~'z'的字符串,我们称一个字符串s_i为原根,当且仅当给出的其他任何字符串都不是它的前缀。

现在牛牛想知道给出的字符串中有多少个原根。
(相同字符串互为前缀)
示例1

输入

3,["a","ab","ba"]

输出

2

说明

"a"是原根
因为"a"是"ab"的前缀,所以"ab"不是原根
"ba"是原根

备注:

第一个参数n代表字符串个数
第二个参数vector s包含n个元素代表给出的字符串。
int solve(int n, char** s, int sLen ) {
    // write code here
    unsigned int num = 0;
    unsigned int cmpLen = 0;
    unsigned int prev, next;
    int i, j;
    for (i = 0; i < sLen; i++) {
        prev = strlen(*(s + i));
        //printf("strlen(*(s + %d)) = %u\n", i, prev);
        for (j = 0; j < sLen; j++) {
            next = strlen(*(s + j));
            if ((i != j) && (prev <= next)) {
                if (0 != strncmp(*(s + i), *(s + j), prev)) {
                    num++;
                    break;
                }
            }
        }
    }
    return num;
}
发表于 2022-04-20 08:47:26 回复(0)

问题信息

难度:
1条回答 5392浏览

热门推荐

通过挑战的用户

查看代码
原根