本帖最后由 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'))
|