删除字符串中出现次数最少的子串

来源:互联网 发布:仪器信息网 网络讲堂 编辑:程序博客网 时间:2024/06/07 07:19

mian函数

#include <stdio.h>


#define MAX_SIZE 1024


int main()
{
    char src[MAX_SIZE];


    int min;
    int count[26] = {0};
    
    printf("Please input string:(only:a-z:)\n");
    scanf("%s",src);


    get_count_ch(src,count);
    
    min = get_min_count(count);
    
    delete_min_count_ch(src,count,min);


    printf("result = %s\n",src);
  
    return 0;
}

输出子串的个数

void get_count_ch(char *s1, int *count)//"aabbhello"
{
    while(*s1 != '\0')
    {
        count[*s1 - 'a']++;

s1++;
    }


}

查找最小个数子串

int get_min_count(int *count)
{
    int i;
    int min;


    for(i = 0; i < 26; i++)
    {
        if(count[i] != 0)
{
            min = count[i];
   break;
}
    }


    for(i = 0; i < 26; i++)
    {
        if(count[i] < min && count[i] != 0)
{
   min = count[i];
}
    }


    return min;
}

删除最小个数子串

void delete_min_count_ch(char *src, int *count, int min)
{
    while(*src != '\0')
    {
        if(count[*src - 'a'] == min)
{
   delete_ch(src);
}
else
{
   src++;
}
    }
}

删除子串

void delete_ch(char *src)
{
    int i;
    int len = strlen(src);


    for(i = 0; i < len; i++)
    {
        *(src + i) = *(src + i + 1);
    }


    *(src + len - 1) = '\0';
}

0 0