|
10鱼币
#在字符串中寻找斐波那契数列,若有一数字不满足此条件,则跳过这一数字,此数字不输出(用正则表达式求解)
斐波那契数列为[1,1,2,3,5,8,13,......]
目标字符串为"21123hsdas34211235111111",则输出结果是"1123112351111"
目标字符串为"111" ,则输出结果是"11"
有哪位勇士能解出这道题,悬赏悬赏
在上面回答基础上改了下
- import re
- def generate_fibonacci(n):
- fibonacci = [1, 1]
- while len(fibonacci) < n:
- fibonacci.append(fibonacci[-1] + fibonacci[-2])
- return fibonacci
- def find_fibonacci_numbers(s):
- fibonacci_numbers = generate_fibonacci(len(s))
- pattern ='('+'('.join(map(str, fibonacci_numbers))+')?'*(len(s)-1)+')\d?'
- result = [each[0] for each in re.findall(pattern, s)]
- return ''.join(result)
- # 示例1
- target_string1 = "21123hsdas34211235111111"
- output1 = find_fibonacci_numbers(target_string1)
- print(output1) #输出值为1123112351111
- # 示例2
- target_string2 = "111"
- output2 = find_fibonacci_numbers(target_string2)
- print(output2) #输出值为11
复制代码
|
|