0


Python正则表达式查找最长数字子串(好未来2017笔试题)

问题描述:读入一个字符串str,输出字符串str中的连续最长的数字串。

思路与代码:

def longest1(s):

  1. '''查找所有连续数字'''
  2. import re
  3. t = re.findall('\d+', s)
  4. if t:
  5. return max(t, key=len)
  6. return 'No'

def longest2(s):

  1. '''使用非数字作为分隔符'''
  2. import re
  3. t = re.split('[^\d]+', s)
  4. if t:
  5. return max(t, key=len)
  6. return 'No'

def longest3(s):

  1. '''笨办法'''
  2. result = []
  3. t = []
  4. # 遍历字符串中所有字符
  5. for ch in s:
  6. # 遇到数字,记录到临时变量
  7. if '0'<=ch<='9':
  8. t.append(ch)
  9. elif t:
  10. # 遇到非数字,把临时变量中的连续数字记下来
  11. result.append(''.join(t))
  12. t = []
  13. # 考虑原字符串以数字结束的情况
  14. if t:
  15. result.append(''.join(t))
  16. if result:
  17. return max(result, key=len)
  18. return 'No'

s = 'ab1dc12ds2345r111111111'

print(longest1(s))

print(longest2(s))

print(longest3(s))

运行结果:

111111111

111111111

111111111


本文转载自: https://blog.csdn.net/dongfuguo/article/details/118704745
版权归原作者 dongfuguo 所有, 如有侵权,请联系我们删除。

“Python正则表达式查找最长数字子串(好未来2017笔试题)”的评论:

还没有评论