|
发表于 2020-2-13 21:38:33
|
显示全部楼层
本帖最后由 genius_7321 于 2020-2-13 23:10 编辑
我的方法好像有点笨:
- import re
- def my_answer(s, tar='AB'):
- flag = 0
- aabb = 0
- dist = {}
- if s.count('A') == 0 or s.count('B') == 0:
- return f'共需删除0个字符!\n字符串本身符合条件'
- else:
- for each in re.finditer(tar, s):
- if s.count('A') == s.count('B'):
- aabb = s.count('B')
- flag = 1
- else:
- sum = s.count('A', each.start() + 1, len(s)) + s.count('B', 0, each.start())
- if sum == 0:
- flag = 2
- else:
- dist[each.start()] = sum
- if flag == 0:
- min_index = min(dist, key=lambda k: dist[k])
- if dist[min_index] > s.count('A'):
- a = s.count('A')
- sb = s.replace('A', '')
- return f'共需删除{a}个字符!\n新字符串为{sb}'
- elif dist[min_index] > s.count('B'):
- a = s.count('B')
- sa = s.replace('B', '')
- return f'共需删除{a}个字符!\n新字符串为{sa}'
- else:
- sa = s[:min_index + 1].replace('B', '')
- sb = s[min_index + 1:].replace('A', '')
- return f'共需删除{dist[min_index]}个字符!\n新字符串为{sa + sb}'
- elif flag == 1:
- return f'共需删除{aabb}个字符!\n可以删除所有的 A 或 B'
- else:
- return f'共需删除0个字符!\n字符串本身符合条件'
- print('示例1结果:', my_answer('BAAABAB'))
- print('示例2结果:', my_answer('BBABAA'))
- print('示例3结果:', my_answer('AABBBB'))
复制代码
|
评分
-
查看全部评分
|