摘要 题目:1.利用键盘录入,输入一个字符串,统计该字符串中各个字符的数量,并输出。
方法一(python) 直接统计英文字符,大写和小写 思路:1、建立26个英文字母的大写和小写部分 2、分别对输入数据进行轮寻 3、查找这些字母中重复字母的个数。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 '''牛客网的输入输出格式--''' import sys''' 直接统计英文字符,大写和小写 思路: 1、建立26个英文字母的大写和小写部分 2、分别对输入数据进行轮寻 3、查找这些字母中重复字母的个数。 ''' data="Thdddfffffffhhhhhbbbbbbbbb" def inputstr (): datastr = [] print ('请输入数据:' ) while True : line = sys.stdin.readline().strip() if not line: break datastr.append(line) return datastr def numstr (data ): list_num = [] list_num_ = [] out_dict = {} for i in range (26 ): list_num.append(chr (ord ('A' ) + i)) list_num_.append(chr (ord ('a' ) + i)) k = 0 for j in range (len (data)): if list_num[i] == data[j]: k += 1 out_dict[list_num[i]] = k k = 0 for j in range (len (data)): if list_num_[i] == data[j]: k += 1 out_dict[list_num_[i]] = k return out_dict if __name__ == "__main__" : outline = inputstr()[0 ] out_dict = numstr(outline) for key in out_dict.keys(): print (key, out_dict[key])
输入输出演示
1 2 3 4 5 6 7 8 9 10 11 12 /home/porter/tempprogram/bishi/venv/bin /python /home/porter/tempprogram/bishi/test2.py 请输入数据: dfhgjhGGhjj G 2 f 1 j 3 d 1 g 1 h 3 Process finished with exit code 0
方法二(python) 直接统计英文字符,大写和小写包括数字符号等 思路:1、统计输入字符串中的字符不一样的字符 2、分别对不一样的字符在整个输入字符列表中进行遍历 3、查找这些字母中重复字母的个数。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 import sys''' 直接统计英文字符,大写和小写包括数字符号等 思路: 1、统计输入字符串中的字符不一样的字符 2、分别对不一样的字符在整个输入字符列表中进行遍历 3、查找这些字母中重复字母的个数。 ''' datastr = ['asddfgghhh' ] def inputstr (): global datastr datastr = [] print ('请输入数据:' ) while True : line = sys.stdin.readline().strip() if not line: break datastr.append(line) def tongji (datain ): datadifferent = [] data_out = {} for data in datain: if data not in datadifferent: datadifferent.append(data) print (datadifferent) for i in range (len (datadifferent)): k = 0 for data in datain: if data == datadifferent[i]: k += 1 data_out[data] = k print (data_out) if __name__ == '__main__' : inputstr() tongji(datastr[0 ])
输入输出演示
1 2 3 4 5 6 7 请输入数据: asdfghhhhhhhhh ['a' , 's' , 'd' , 'f' , 'g' , 'h' ] {'d' : 1 , 's' : 1 , 'f' : 1 , 'h' : 9 , 'a' : 1 , 'g' : 1 } Process finished with exit code 0
方法三(python) 直接统计英文字符,大写和小写包括数字符号等 思路:1、将输入的字符串按照 2、分别对不一样的字符在整个输入字符列表中进行遍历 3、查找这些字母中重复字母的个数。 方法三的代码是方法二的另一种简单的实现方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 import sys''' 直接统计英文字符,大写和小写包括数字符号等 思路: 1、统计输入字符串中的字符不一样的字符 2、分别对不一样的字符在整个输入字符列表中进行遍历 3、查找这些字母中重复字母的个数。 ''' datastr = ['asddfgghhh' ] def inputstr (): global datastr datastr = [] print ('请输入数据:' ) while True : line = sys.stdin.readline().strip() if not line: break datastr.append(line) def tongji (datain ): datadifferent = [] data_out = {} for data in datain: if data not in datadifferent: datadifferent.append(data) data_out[data] = 1 else : data_out[data] = data_out[data]+1 print (datadifferent) print (data_out) if __name__ == '__main__' : inputstr() tongji(datastr[0 ])
输入输出演示1 2 3 4 5 6 7 请输入数据: fffghhh ['f' , 'g' , 'h' ] {'g' : 1 , 'h' : 3 , 'f' : 3 } Process finished with exit code 0
上面的代码实现是python的实现方式,接下来我将进行C/C++的方式进行实现
方法一(c/c++) 直接统计英文字符,大写和小写包括数字符号等 思路:1、将输入的字符串按照 2、分别对不一样的字符在整个输入字符列表中进行遍历 3、查找这些字母中重复字母的个数。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 #include <stdio.h> #include <stdlib.h> #define N 26 char shurustr[N]={'\0' };char chayimingm[N]={'\0' },chayinum[N]={0 }; void tongji (char *p) { for (;*p!='\0' ;p++) { for (int i=0 ;i<N;i++) { if (*p == chayimingm[i]) { chayinum[i] += 1 ; break ; } else { if (chayimingm[i] == '\0' ) { chayimingm[i] = *p; chayinum[i] = 1 ; break ; } } } } for (int i=0 ;i<N;i++) { if (chayimingm[i] == '\0' )break ; printf ("字符:%c 的个数为:%d\n" ,chayimingm[i],chayinum[i]); } } int main (void ) { printf ("请输入字符串:\n" ); scanf ("%s" ,shurustr); printf ("输出的字符串为:%s \n" , shurustr); tongji(shurustr); return 0 ; }
输入输出演示1 2 3 4 5 6 7 8 9 请输入字符串: aaassskkkkggc 输出的字符串为:aaassskkkkggc 字符:a 的个数为:3 字符:s 的个数为:3 字符:k 的个数为:4 字符:g 的个数为:2 字符:c 的个数为:1 按 <RETURN> 来关闭窗口...
方法二(c/c++) 直接统计英文字符,大写和小写包括数字符号等 思路输入字符串数组不超过20个字符的输入 shurustr 存储不同字符串的一个命名数组 chayimingm 按照对应位置存储的差异字符对应的数目的字符数组 chayinum 均为20个字符空间大小 算法,分别匹配26个英文大写字母和英文小写字母 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 #include <stdio.h> #include <stdlib.h> #define N 40 int chayimingm_up[26 ] = {0 };int chayimingm_small[26 ] = {0 };void tongji_xiaoxie (char *shurustr) { char tempchar = 'A' ; printf ("开始计算\n" ); for (int i=0 ;i<26 ;i++) { chayimingm_up[i] = 0 ; for (int j=0 ;j<N;j++) { if (tempchar == shurustr[j]) { chayimingm_up[i]+=1 ; } } tempchar +=1 ; } tempchar = 'a' ; for (int i=0 ;i<26 ;i++) { chayimingm_small[i] = 0 ; for (int j=0 ;j<N;j++) { if (tempchar == shurustr[j]) { chayimingm_small[i]+=1 ; } } tempchar +=1 ; } tempchar = 'a' ; for (int i=0 ;i<26 ;i++) { if (chayimingm_small[i]>0 ) { printf ("字符:%c 个数为:%d " ,tempchar, chayimingm_small[i]); } tempchar +=1 ; } tempchar = 'A' ; for (int i=0 ;i<26 ;i++) { if (chayimingm_up[i]>0 ) { printf ("字符:%c 个数为:%d " ,tempchar, chayimingm_up[i]); } tempchar +=1 ; } } int main (void ) { char strin[40 ]={'\0' }; printf ("请输入字符串:\n" ); scanf ("%s" ,strin); printf ("输入的字符串为:%s \n" ,strin); tongji_xiaoxie (strin); return 0 ; }
代码效果演示1 2 3 4 5 请输入字符串: sddffffffdddssll 输入的字符串为:sddffffffdddssll 开始计算 字符:d 个数为:5 字符:f 个数为:6 字符:l 个数为:2 字符:s 个数为:3 按 <RETURN> 来关闭窗口...