zoukankan      html  css  js  c++  java
  • 字串统计

     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 //定义子串参数结构体 
     5 struct sub_str
     6 {
     7     char sstr[61]; //子串 
     8     int len; //子串长度 
     9     int times; //子串出现的次数 
    10 };
    11 
    12 int main()
    13 {
    14     int i,j,k;
    15     int l,l_temp; //l:用于记录输入的要统计的子串的最小长度;l_temp:用于记录遍历子串时的临时动态子串长度 
    16     char str[61],sstr_temp[61]; //str:用于指向输入的要统计的字符串;sstr_temp:用于指向当前统计的子串 
    17     int str_len; //用于记录输入的要统计的字符串的长度 
    18     struct sub_str substr[1830]; //substr[1830]:用于记录各个子串的参数,最多有1+2+3+···+60个子串 
    19     struct sub_str substr_temp; //substr_temp:用于对substr[1830]中的子串进行排序时交换顺序的临时中间结构体变量 
    20     int sstr_num=0; //用于统计存入substr[1830]中的实际子串数量 
    21     int max_times; //用于记录子串出现的最大次数 
    22     
    23     //输入 
    24     scanf("%d",&l); //输入统计的子串的最小长度 
    25     getchar(); //除去输入时的回车键 
    26     gets(str); //输入要统计的字符串 
    27     
    28     str_len=strlen(str); //得到输入的要统计的字符串的长度 
    29 
    30     //初始临时动态子串长度为最大长度,遍历要统计的字符串中满足长度的子串 
    31     for(l_temp=str_len;l_temp>=l;l_temp--) 
    32     {
    33         for(i=0;i<str_len-l_temp;i++) //长度为l_temp的子串在长度为str_len的字符串中有str_len-l_temp个
    34         {
    35             for(j=i,k=0;j<i+l_temp;j++,k++) //得到当前要统计的子串
    36                 sstr_temp[k]=str[j];
    37 
    38             for(k=0;k<sstr_num;k++) //查询 substr[1830] 中是否存在当前要统计的子串 
    39                 if(strcmp(sstr_temp,substr[k].sstr)==0) //有,则使该子串的出现次数加1 
    40                 {
    41                     substr[k].times++;
    42                     break;
    43                 }
    44 
    45             if(k==sstr_num) //没有,则在 substr[1830] 中新增该子串,并初始化各个参数 
    46             {
    47                 strcpy(substr[sstr_num].sstr,sstr_temp);
    48                 substr[sstr_num].len=l_temp;
    49                 substr[sstr_num].times=1;
    50                 sstr_num++; // substr[1830] 中实际的子串数量加1 
    51             }
    52             
    53             memset(sstr_temp,0,sizeof(sstr_temp)); //清 0 sstr_temp[61],继续遍历该长度的子串 
    54         }
    55     }
    56     
    57     //采用冒泡排序法对 substr[1830] 中的子串根据出现次数进行排序 
    58     for(i=0;i<sstr_num-1;i++) 
    59     {
    60         for(j=i;j<sstr_num;j++)
    61         {
    62             if(substr[j].times>substr[i].times)
    63             {
    64                 for(k=0;k<61;k++)
    65                     substr_temp.sstr[k]=substr[i].sstr[k];
    66                 substr_temp.len=substr[i].len;
    67                 substr_temp.times=substr[i].times;
    68 
    69                 for(k=0;k<61;k++)
    70                     substr[i].sstr[k]=substr[j].sstr[k];
    71                 substr[i].len=substr[j].len;
    72                 substr[i].times=substr[j].times;
    73                 
    74                 for(k=0;k<61;k++)
    75                     substr[j].sstr[k]=substr_temp.sstr[k];
    76                 substr[j].len=substr_temp.len;
    77                 substr[j].times=substr_temp.times;
    78             }
    79         }
    80     }
    81     
    82     //输出 
    83     puts(substr[0].sstr);
    84     
    85     return 0;
    86 }
  • 相关阅读:
    数据库连接池大小
    java的关闭钩子(Shutdown Hook)
    为线程池中的每个线程设置UncaughtExceptionHandler
    java 线程的interrupt和sleep、wait
    中断
    NIO
    VMware 安装 VMware Tools 工具
    php 雪花算法
    python 执行系统文件
    php curl 获取响应头
  • 原文地址:https://www.cnblogs.com/LeoFeng/p/4340155.html
Copyright © 2011-2022 走看看