计算并打印出每个字符串中排列在任意x前面的所有y的个数

Victory belongs to those that believe in it the most, and believe in it the longest. ——《珍珠港》

胜利属于那些信念坚定、永不动摇的人。

问题

1
2
有如下数组,请计算并打印出每个字符串中排列在任意x前面的所有y的个数。 
arr = ['xxyyxyyyyyxxx', 'yyxxxxy', 'xyyyxxyx', 'xxxx', 'xxxyyy']

解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re

def change_s(s_list):
res_list = []
pattern = re.compile(r'(y+)x')
for i in s_list:
res = pattern.findall(i)
res_list.append(len(''.join(res)))
return res_list


arr = ['xxyyxyyyyyxxx', 'yyxxxxy', 'xyyyxxyx', 'xxxx', 'xxxyyy']
print(change_s(arr))

>>>[7, 2, 4, 0, 0]

思路

1
2
3
4
5
用正则匹配字符串中所有以x结尾的任意y字符串。
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象。
findall 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
将每个字符串中符合规则的y字符串列表拼接成字符串,计算每个字符串y的个数并添加至列表中,最后返回列表。