HJ74 题解 | #参数解析#

参数解析

https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677

#思路:
#先获取到双引号内部的命令,这部分是不需要去掉空格的
#再按双引号分割字符串,得到还没按空格分割的命令
#清洗数据,去掉""和" "
#如果不是双引号内部命令就按空格分割,是就不需要分割

import re
a=input()
b=re.findall(r'"(.*?)"',a)#获取到双引号内的命令,方便区分是否按空格分割
c=a.split("\"")#使用双引号分割字符串
d=[]#存储带空格的命令
for i in c:#把c中的空字符串和空格处理掉
    if i!="" and i!=" ":
        d.append(i)
ans=[]#结果
for i in d:
    if i not in b:#不在b中,需要分割后添加
        ans+=i.split()
    else:
        ans.append(i)#在b中,不需要分割,直接添加
print(len(ans))
for i in ans:
    print(i)

上面的代码可以通过题目所有用例,但是还是有缺陷的,比如这样的hack数据就过不了

输入:
C:\\program files "C:\\program files " "d:\"
输出:
4
C:\\program
files
C:\\program files 
d:\

如果规定双引号的内部的命令不能以空格结尾,并且以双引号包裹的命令前后都得用空格和其他命令隔开,上面的代码就没问题了(因为这组hack数据就不存在了)

#华为od##华为##华为od机试##华为机试##正则表达式#
华为HJ103所有解法 文章被收录于专栏

这是我准备华为od面试的专属专栏,我会把自己的解法更新在里面,我会尽量写清楚自己的思路以及多写关键注释,希望对阅读的人有帮助~~~

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务