73.SQL代码补全功能|Marscode AI刷题

44 阅读1分钟

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")