zoukankan      html  css  js  c++  java
  • 子串计算

    前言

    花了半小时时间很暴力的解决了一个子串计算的问题,感觉还挺有意思的,这里记录一下!

    题目

    题目描述:
    给出一个01字符串(长度不超过100),求其每一个子串出现的次数。
    输入:
    输入包含多行,每行一个字符串。
    输出:
    对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。
    样例输入:
    10101
    样例输出:
    0 2
    01 2
    1 3
    10 2
    101 2

    代码(c)

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    typedef struct cstr {
        char s[101];
    } cstr;
     
     
    int compare(const void *p, const void *q)
    {
        const cstr *a = p;
        const cstr *b = q;
     
        return strcmp(a->s, b->s);
    }
     
    int main(void)
    {
        int i, j, k, len, index, num;
        cstr cs[100000];
        char str[101];
        char tmp[101];
     
        while (scanf("%s", str) != EOF) {
            len = strlen(str);
            index = 0;
     
            // 获取所有子串
            for (i = 1; i <= len; i ++) {
                for (j = 0; j + i <= len; j ++) {
                    memset(tmp, '', sizeof(tmp));
                    for (k = 0; k < i; k ++)
                        tmp[k] = str[j + k];
                    strcpy(cs[index].s, tmp);
                    index ++;
                }
            }
     
            // 按字典升序排序
            qsort(cs, index, sizeof(cs[0]), compare);
     
            // 计算子串出现次数
            for (i = 0; i < index;) {
                j = i + 1;
                num = 1;
                while (j < index) {
                    if (strcmp(cs[i].s, cs[j].s) == 0) {
                        num ++;
                        j ++;
                    } else {
                        break;
                    }
                }
                if (num > 1)
                    printf("%s %d
    ", cs[i].s, num);
                i = j;
            }
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1149
        User: wangzhengyi
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:10708 kb
    ****************************************************************/


  • 相关阅读:
    函数
    A × B problem
    求n的阶乘
    自己构建一个vector函数
    int与string的互相转化
    列一列(斐波那契数列)
    找一找
    c++大数计算模板
    JSON--js中 json字符串转对象、对象转字符串
    JSON
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3228657.html
Copyright © 2011-2022 走看看