📅  最后修改于: 2023-12-03 15:42:18.272000             🧑  作者: Mango
这是2016年的GATE计算机科学和信息技术考试中的问题28。它要求程序员实现一个函数,该函数从一个字符串中删除一些字符,并返回剩余字符串。
该函数有三个参数:
s
,类型为 string
。t
,类型为 string
。p
,类型为 string
。该函数应该返回删除指定字符后的源字符串,如果删除所有字符后源字符串为空,则返回字符串"EMPTY".
def delete_characters(s: str, t: str, p: str) -> str:
d = {i: True for i in t}
res = ''
for c in s:
if c not in d:
res += c
return res if len(res) > 0 else 'EMPTY'
在上面的函数的实现中,首先使用了一个字典将我们要删除的字符映射到 True,方便之后的判断。然后遍历字符串中的每个字符,如果当前字符不属于 t
,就将其拼接到结果字符中。最后,将结果返回,如果结果字符为空则返回 "EMPTY"。
我们可以使用以下测试案例来测试上述的函数实现:
def test_delete_characters():
s1 = 'hello world'
t1 = 'el'
p1 = 'lowd'
assert delete_characters(s1, t1, p1) == 'ho word'
s2 = 'this is a test'
t2 = 'aeiou'
p2 = 'tt'
assert delete_characters(s2, t2, p2) == 'ths s t tst'
s3 = 'what is up'
t3 = 'xyz'
p3 = 'what is up'
assert delete_characters(s3, t3, p3) == 'what is up'
s4 = 'just letters'
t4 = 'aeiou'
p4 = ''
assert delete_characters(s4, t4, p4) == 'jst lttrs'
s5 = '123456789'
t5 = '02468'
p5 = '13'
assert delete_characters(s5, t5, p5) == '13579'
s6 = 'all g'
t6 = 'all g'
p6 = ''
assert delete_characters(s6, t6, p6) == 'EMPTY'
test_delete_characters()
我们可以看到,上述函数已经通过了各种情况的测试。