strip comments
题目
Strip Comments
描述
Complete the solution so that it strips all text that follows any of a set of comment markers passed in. Any whitespace at the end of the line should also be stripped out.
完成该解决方案,以便它剥离传入的任何一组注释标记后面的所有文本。行末尾的任何空格也应该去掉。
例子
Given an input string of:
给定以下内容的输入字符串:
apples, pears # and bananas
grapes
bananas !apples
The output expected would be:
预期产出将是:
apples, pears
grapes
bananas
The code would be called like so:
代码的调用方式如下:
result = solution("apples, pears # and bananas\ngrapes\nbananas !apples", ["#", "!"])
# result should == "apples, pears\ngrapes\nbananas"
思路
这题看描述非常的简单,甚至看完例子都还有点懵,但是其实非常的简单。
首先明白\n代表的是换行,通过上面的例子也可以看出来
然后就是明白如何进行删除,根据传入的markers得到删除的标志,一直删除包括标志后面的字符到\n换行
这里还需要注意空格的处理,如果标志的前面是空格,删除后会变成行尾的空格,题意是不需要的,这里是要删除的处理方法,单下一个是标志的时候,并且前面是空格的时候,跳过。
# 空格处理
if i < (len(string) - 1) and string[i + 1] in markers:
if string[i] == " ":
continue
本题的关键就是在于标志,其实非常的简单,我们只要遍历字符串,当遍历到的字符是标志的时候,我们做好标记,后面的字符都删掉,当碰到\n换行的时候,就取消这个标记,所有的字符串操作都要在标记取消的时候
# 确定标志的起始位置
if markers_flag == 0 and string[i] in markers:
markers_flag = 1
# 确定标志的终止位置
elif (markers_flag == 1) and (string[i] not in markers) and (string[i] == "\n"):
markers_flag = 0
if markers_flag == 0:
全部代码
def solution(string,markers):
#your code here
markers_flag = 0
result = ''
# 直接遍历string
for i in range(len(string)):
# 确定标志的起始位置
if markers_flag == 0 and string[i] in markers:
markers_flag = 1
# 确定标志的终止位置
elif (markers_flag == 1) and (string[i] not in markers) and (string[i] == "\n"):
markers_flag = 0
if markers_flag == 0:
# 空格处理
if i < (len(string) - 1) and string[i + 1] in markers:
if string[i] == " ":
continue
result += string[i]
return result[:]
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 活着死去
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

