1. 计算重复字母出现的次数
编写一个函数,该函数将返回在输入字符串中出现多次(不同的不区分大小写的)字母字符和数字的计数。可以假定输入字符串仅包含字母(大写和小写)和数字。
例如: "abcde" -> 0 # no characters repeats more than once
"aabbcde" -> 2 # 'a' and 'b'
"aabBcde" -> 2 # 'a' occurs twice and 'b' twice (`b` and `B`)
"indivisibility" -> 1 # 'i' occurs six times
"Indivisibilities" -> 2 # 'i' occurs seven times and 's' occurs twice
"aA11" -> 2 # 'a' and '1'
"ABBA" -> 2 # 'A' and 'B' each occur twice
首先可以利用Python的collection包下counter的类
这个方法可以统计出每个元素出现的次数,代码如下:
def duplicate_count(text):
from collections import Counter
result = Counter(text)
return result
print(duplicate_count('aA11'))
其次,可以把输入的字符串全部变成小写(大写),然后用if判断语句进行计数统计,代码如下:
def duplicate_count(text):
text = text.lower()
counts = 0
for i in set(text):
if text.count(i) >= 2:
counts += 1
return counts
print(duplicate_count('aA11'))
2. 把0挪到队尾
编写一个算法,该算法采用数组并将所有零移动到最后,保留其他元素的顺序。 例如: move_zeros([false,1,0,1,2,0,1,3,"a"]) # returns[false,1,1,2,1,3,"a",0,0]
大家可以试试这个题目,很有意思的。
我是这样考虑的,对元组中的元素进行判断,然后用一个循环,删掉一个0,就在元组末尾补一个0,就可以达到题目要求,代码如下:
def move_zeros(array):
for i in array:
if i ==0 and str(i) != 'False':
array.remove(0)
array.append(0)
return array
3.编程技巧
对于我每天分享的题目,大家做完之后,首先一定要跑测试用例;然后一定要温故,多想想有没有更优的解法,再此也欢迎大家交流;最后能做个笔记会更好,对你的功力绝对有好处。做完这三步,你的功力必大涨。