本题是字符串模拟结合哈希集合与排序。
strip()(C++/Java 为跳过首尾空格子串)。startswith / startsWith / compare(0, len, prefix)==0),则该命令参与统计。set / TreeSet 收集,再转为有序列表(C++ 中 set 已有序)。给定一组命令行字符串和一个命令前缀,需要找出所有以该前缀开头的命令行表达式中,前缀之后的第一个关键字,并将这些关键字按字典序排序后返回。
如果找不到相匹配的前缀则返回空,匹配多个相同关键字仅返回一个即可。
示例 1:给定的命令行表达式为 ["display device","display port status"], 输入前缀是 "display", 则返回 ["device","port"]
示例 2:给定的命令行表达式为 ["set negotiation mode ","set port down"], 输入前缀是 "", 则返回 ["set"]
示例 3:给定的命令行表达式为 ["git commit−m message","git push origin master", "git pull"], 输入前缀是 "git ", 则返回 ["commit","pull","push"]
1、命令行条数 0~1000 条,每个命令行的长度为 [1,200]。
2、每个命令行表达式中的关键字均由小写字母 、_ 或 - 组成。
3、命令行关键字不包含空格,命令行中的字段有空格进行间隔。
4、仅命令关键字之间的空格有意义,字符串开始或结尾的空格需要忽略, 如 " " 等价于 "", "a b " 等价于 "a b"
输入
["display port status", "display device "],"display"
输出
["device","port"]
说明
每个命令行都和前缀 "display" 匹配,则返回每个命令的第二个关键字
输入
["set negotiation mode ", "set port down"],""
输出
["set"]
说明
首先匹配 "" 的命令关键字为 2 个 "set", 去重后返回 1 个 "set"
输入
[],"test"
输出
[]
说明
输入命令行列表为空
输入
["ttttt"],"sssss"
输出
[]
说明
前缀匹配没找到