python试题[转]

转自:http://forum.ubuntu.org.cn/viewtopic.php?t=260613

1.平衡点问题

平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点
要 求:返回任何一个平衡点

2.支配点问题:
支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数,其所在位序成为支 配点;比如int[] a = {3,3,1,2,3};3为支配数,0,1,4分别为支配点;
要求:返回任何一个支配点

以下给 出我想的答案

#1.平衡点问题

代码
 1 # -*- coding: utf-8 -*- 
 2 
 3 data = [1357825420]
 4 
 5 def main() :
 6 
 7    dataIndex = []
 8    length = len(data)
 9    total = sum(data)
10 
11    if (length > 2) :
12       tempSum = data[0]
13       for i in range(1, length - 1) :
14          if (tempSum * 2 + data[i] == total) :
15             dataIndex.append(i)
16          tempSum = tempSum + data[i]   
17    
18    return dataIndex
19 
20 if __name__ == "__main__" :
21    print(main())

#2.支配点问题

代码
 1 # -*- coding: utf-8 -*-
 2 # 用dictionary实现,key存放所给的数,value为list,存放所给数在数组中的位置
 3 # 一个数可能在数组中出现多次
 4 
 5 data = [33123]
 6 
 7 def main() :
 8    dataIndex = []
 9    hashData = {}
10 
11    for i in range(0, len(data)) :
12       key = data[i]
13       if (key in hashData) :
14          value = hashData[key]
15          value.append(i)
16       else :
17          value = []
18          value.append(i)
19          hashData[key] = value
20 
21    halfLength = int(len(data) / 2)
22    if (len(data) % 2 == 1) :
23       halfLength = halfLength + 1
24 
25    for key in hashData :
26       if (len(hashData[key]) >= halfLength) :
27          dataIndex.append(hashData[key])
28    
29    return dataIndex
30 
31 if __name__ == "__main__" :
32    print(main())

 要求算一任意长度字符串中不同的字符以及它的个数

= "abcdefgabc"
dic 
= dict.fromkeys(s, 0)
for x in s:
dic[x] 
+= 1
print '\n'.join('%s,%s' % (k, v) for k, v in dic.items())
原文地址:https://www.cnblogs.com/nsnow/p/1714658.html