这题本质上是 字符串解析 + 哈希表模拟。
我们需要按顺序解析批量命令,每条命令独立执行;即使某条失败,也不能影响后续命令继续处理。 因此最适合用:
rule_id -> rule_index模拟一个系统的命令行配置,包含添加、修改、删除三项操作,详情如下:
其中:add_rule、mod_rule、del_rule 是操作关键字,rule_id、rule_index 是属性关键字且属性取值范围为数字 1 - 9999 之间,操作、属性之间都用空格进行分割。
在进行所有操作时,如果缺少关键字,或者相应的 rule_id、rule_index 的取值不符合要求,则操作失败。
在进行添加操作时,参数必须包含 rule_id 和 rule_index,如果添加的 rule_id 当前不存在,则添加成功,如果添加已经存在的 rule_id,则操作失败。
在进行修改操作时,参数必须包含 rule_id 和 rule_index,如果当前 rule_id 不存在,或前后 rule_index 没有变化,则操作失败。
在进行删除操作时,参数必须包含 rule_id,如果当前 rule_id 不存在,则操作失败。
在进行批量操作时,一个命令失败后可以继续下一条命令的操作。现给有一组批量操作的字符串,包括不超过 1000 条连续的操作指令,格式为 [cmd][cmd][cmd],请将字符串解析后按照顺序进入你实现的系统,统计出配置失败的次数。
输入
"add_rule rule_id=1 rule_index=9999][mod_rule rule_id=1 rule_index=10][del_rule rule_id=1]"
输出
0
说明
所有操作都成功。
输入
"[add_rule rule_id=1][mod_rule rule_id=1 rule_index=10][del_rule rule_id=1]"
输出
3
说明
add 操作不包含 rule_index,添加失败,后续修改和删除操作,对应的 rule_id 无数据,操作也失败,累计失败 3 次。
输入
"[add_rule rule_id=1 rule_index=10000]"
输出
1
说明
rule_index 不符合规范。