1.题目
问题描述
在开发SQL编辑器时,实现自动补全功能是提高用户体验的重要一环。小C需要实现一个功能,根据用户输入的字符片段,快速从已知的SQL关键字和数据库相关名称中找到所有以该片段开头的候选词,并按字典序输出。
例如,当用户输入 s 时,编辑器需要自动提示以 s 开头的所有可能选项,如 select。如果用户输入 fr,则需要提示 from 和 from_mobile。如果在提示中只有一个选项符合,如输入 from_ 时只提示 from_mobile。
测试样例
样例1:
输入:num = 8,data = ["select", "from", "where", "limit", "origin_log_db", "event_log_table", "user_id", "from_mobile"], input = "f"
输出:
'from,from_mobile'
样例2:
输入:num = 8,data = ["select", "from", "where", "limit", "origin_log_db", "event_log_table", "user_id", "from_mobile"], input = "wh"
输出:
'where'
样例3:
输入:num = 8,data = ["select", "from", "where", "limit", "origin_log_db", "event_log_table", "user_id", "from_mobile"], input = "z"
输出:
'-1'
样例4:
输入:num = 8,data = ["select", "from", "where", "limit", "origin_log_db", "event_log_table", "user_id", "from_mobile"], input = "origin"
输出:
'origin_log_db'
2.思路
遍历data,找到以input内容开头的字符串
注意:
- 结果按字典序输出
- 去重
3.代码
def solution(num, data, input):
# Please write your code here
result = []
for i in range(num):
if data[i].startswith(input):
result.append(data[i])
if not result:
return "-1"
# 使用 set 去重
result = list(set(result))
# 对结果列表按字典序排序
result.sort()
return ",".join(result)
if __name__ == "__main__":
# You can add more test cases here
testData1 = ["select", "from", "where", "limit", "origin_log_db", "event_log_table", "user_id", "from_mobile"]
testData2 = ["select", "from", "where", "limit", "group", "having", "in", "index", "inner", "insert", "like", "log_db", "log_table", "user_id", "group_name", "group_id"]
print(solution(8, testData1, "f") == "from,from_mobile" )
print(solution(16, testData2, "g") == "group,group_name,group_id")
print(solution(16, testData2, "m") == "-1")