华为2013校园招聘上机笔试题-删除一个字符串中出现次数最少的字符

2013华为校园招聘机试题9月10日题

题目及参考解答来源:http://blog.csdn.net/caollcool/article/details/7971752

http://blog.csdn.net/nixindong1984/article/details/7964555

4.【功能】 删除一个字符串中出现次数最少的字符

 【函数原型】char *  delChar(char *s,int iLen)  

 【输入】s为输入字符串

     iLen为输入字符串长度 

 【返回】如输入字符串为“abcdd”,输出为"dd" 。字符串中只有小写字母,不含空格且字符串最大长度不超过20。

 1 #include <stdio.h>     
 2 #include <string.h>     
 3 #include <malloc.h>     
 4 
 5 char *delChar(char *s,int iLen) ;
 6 
 7 int main(void)    
 8 {    
 9     char str[] = "abebadchtcdeghigiktkk";    
10     
11     int iLen = strlen(str)/sizeof(char);    
12     char *tmp = delChar(str,iLen);    
13     printf("%s\n",tmp);  
14     
15     return 0;
16 }    
17 
18 char *delChar(char *s,int iLen)    
19 {   
20     if (NULL == s || iLen < 0)
21     {
22         return NULL;
23     }
24 
25     int i = 0;
26     /*一共有26个字母,数组的最大数值为26,min存放字符中最少的个数*/
27     const int MAXLEN = 26;
28     int min, nCountTable[MAXLEN];
29     /*初始化*/
30     for (i = 0; i < MAXLEN; i++)
31     {
32         nCountTable[i] = 0;
33     }
34     /*计算得出现有的字符数目;*/
35     for (i = 0; i < iLen; i++)
36     {
37         (nCountTable[*(s+i) - 'a'])++;
38     }
39 
40     for (i = 0; i < MAXLEN; i++)
41     {
42         printf("%3d", nCountTable[i]);
43     }
44     putchar('\n');
45 
46     i = 0;
47     //找出数组中的一个不等于0的值
48     while(nCountTable[i] == 0)
49     {
50         i++;
51     }
52     /*求出min值*/
53     min = nCountTable[i];
54     for (i = 0; i < MAXLEN; i++)
55     {
56         if (nCountTable[i] != 0)
57         {
58             if (nCountTable[i] < min)
59             {
60                 min = nCountTable[i];
61             }
62         }
63     }
64     /*将字符串中字符非最少的字符存放在一个临时变量中,并给出地址。*/
65     char *temp;
66     i = 0;
67     temp = (char *) malloc(iLen * sizeof(char));
68     while(*s != '\0')
69     {
70         if (nCountTable[*s - 'a'] != min)
71         {
72             *(temp + i) = *s;
73             i++;
74         }
75         s++;
76     }
77     *(temp + i) = '\0';
78 
79     return temp;
80 }   

posted on 2012-09-19 22:20  Raphael Lou  阅读(501)  评论(0编辑  收藏  举报

导航