题目描述
给定一个由多个命令字组成的命令字符串:
- 字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号;
- 命令字之间以一个或多个下划线_进行分割;
- 可以通过两个双引号””来标识包含下划线_的命令字或空命令字(仅包含两个双引号的命令字),双引号不会在命令字内部出现;
请对指定索引的敏感字段进行加密,替换为******(6个*),并删除命令字前后多余的下划线_。 如果无法找到指定索引的命令字,输出字符串ERROR。
输入描述
输入为两行,第一行为命令字索引K(从0开始),第二行为命令字符串S。
输出描述
输出处理后的命令字符串,如果无法找到指定索引的命令字,输出字符串ERROR。
用例1
输入
1
password__a12345678_timeout_100
输出
password_******_timeout_100
用例2
输入
2
aaa_password_******_timeout_100
输出
aaa_password_******_timeout_100_""
解析
本题考查是的对数组、字符串和集合一些基础操作,所以逻辑上比较简单,直接上代码。
python
index = int(input())
strs = input()
data = []
def process_strs():
# 定一个boolean类型的flag,标识命令字中是否包含双引号 "
flag = False
tmp = ''
for ch in strs:
if ch == '"':
flag = not flag
# 判断当前子串是空串还是子串结尾
if ch == '_' and not flag:
if len(tmp) != 0:
data.append(tmp)
tmp = ''
else:
tmp += ch
if len(tmp) != 0:
data.append(tmp)
def get_result():
res = ''
if index < len(data):
data[index] = '******'
for s in data:
if s == '' or len(s) == 0:
continue
else:
res += s
res += '_'
if len(res) != 0:
res = res[:-1]
print(res)
else:
print('ERROR')
def main():
process_strs()
get_result()
if __name__ == '__main__':
main()
欢迎各位补充和优化。
3456

被折叠的 条评论
为什么被折叠?



