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面试的专属专栏,我会把自己的解法更新在里面,我会尽量写清楚自己的思路以及多写关键注释,希望对阅读的人有帮助~~~