python: 求一个数字中出现频率最高的数。 例如:longestDigitRun(11777332) return 7 c语言:定义一个函数digit(n,k),它返回整数n的从右...

python\u5982\u4f55\u7edf\u8ba1\u5b57\u7b26\u4e2d\u6709\u591a\u5c11\u6570\u5b57\u4f8b\u5982123abc\u4e2d\u67093\u4e2a\u6570\u5b57

def count_digits(s):
return len([i for i in s if i.isdigit()])
def count_digits2(s):
return map(str.isdigit ,s).count(True)
s='a1b2c345'
print count_digits(s)
print count_digits2(s)

#include "stdio.h"

int digit(int n,int k)
{
while(k>1)
{
n/=10;
k--;
}
return n%10;
}

void main()
{
printf("%d\n%d\n",digit(1234,3),digit(6754,4));
}

我想了种恶心的方法。嘿嘿。不过是可以实现的。像下面的什么from collections import Counter我发现我的3.x不能运行。 如果某个数字出现的最高次数相等,就应该是多个数,而不是一个数字,所以结果我认为应该是个列表。

mydic = {}
getkey = ''
mylist =[]
in_str = input('input your number: ')
for evestr in in_str:
myitem = in_str.count(evestr)
mydic[evestr] = myitem
for k in mydic.keys():
if mydic[k] == max(mydic.values()):
mylist.append(k)
print(list(set(mylist)))

def longestDigitRun(num):
a = str(num)
return int(reduce(lambda x,y: x if a.count(x) > a.count(y) else y,set(a)))

print longestDigitRun(11777332)

把 int 转化成 str 就很好处理了,python对字符串的操作非常强大。

from collections import Counter
def longestDigitRun(num):
return int(Counter(str(num)).most_common(1)[0][0])

print longestDigitRun(11777332)

注意这个假设你的python版本是2.7

def longestDigitRun(arg):
strarg = str(arg)
v = 0
for i in range(10):
u = 0
for j in range(len(strarg)):
if i == int(strarg[j]):
u = u+1
if u > v:
v = u
k = i
print(i,v)
return(k)

print(longestDigitRun(17777733321))

凑合一下能用。试试看。

def longestDigitRun(number):
number = str(number)
count = [0,0,0,0,0,0,0,0,0,0]
for d in number:
count[int(d)] = count[int(d)] + 1
max = 0
index = -1
i = 0
for n in count:
if max < n:
max = n
index = i
i = i + 1
return index
print longestDigitRun(11777332)

扩展阅读:python四个数字排列组合 ... python数字0-10转汉字 ... 用python求两个数字的和 ... python编程 ... python 判断是否为数字 ... python代码大全 ... python列表数字求和 ... python 判断纯数字 ... python输出如下数字金字塔 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网