【发布时间】:2020-05-30 14:34:57
【问题描述】:
我目前正在处理 Codewars 上的 4kyu 问题,在给定一个字符串和一个字符列表的情况下,您的函数应该删除字符串中的字符以及随后的任何其他字符,直到行尾。我想出了一个我认为应该可行的解决方案。因为我需要在找到特殊字符后删除字符串中的每个字符,所以我用 '\n' 分割字符串,因为这标志着行尾。 然后我开始编写检查所有子字符串的函数:
def solution(string,markers):
str_arr = string.split('\n')
print(str_arr)
new_str = []
for substring in str_arr:
count = 0
for mark in markers:
if mark in substring:
count +=1
if count == 0:
new_str.append(substring)
for char in substring:
if char in markers:
sbstr = substring[:substring.index(char)-1]
new_str.append(sbstr.strip())
if str_arr.index(substring) == len(str_arr)-1:
break
print(new_str)
solution = '\n'.join(new_str)
return solution
我首先检查子字符串中是否有标记,如果没有,我将其添加到新列表中。此解决方案适用于 Codewars 提供的大多数测试,但由于某种原因,此功能无法解决某些测试。其中之一是:
测试解决方案(“!苹果香蕉香蕉苹果-\n西瓜'\n梨樱桃橙子^苹果\ncherries西瓜草莓香蕉草莓”,['@',',','=','-',“' ", '!'])
,我的输出是:
它也应该适用于随机输入:'!苹果香蕉香蕉苹果\n!苹果香蕉香蕉苹果\n西瓜\n梨樱桃橙^苹果\ncherries西瓜草莓香蕉草莓'应该等于'\n西瓜\n梨樱桃橙^苹果\ncherries西瓜草莓香蕉草莓'
目前,我不知道如何解决这些问题,特别是因为该功能在 40/48 左右的情况下运行良好。感谢您对如何改进代码提出任何建议。
【问题讨论】:
标签: python