快捷键分配算法

时间:2015-11-13 22:34:07

标签: string algorithm hash language-agnostic user-friendly

我的程序中有多个选择菜单,如下所示:

Which option do you want? (choose one)
    f: First option
    s: Second option
    t: Third option

用户然后按fst进行选择。在这个例子中,我手动选择了字母,这应该是显而易见的。

但在某些情况下存在冲突:假设我有Fourth option - 我无法使用f。明智的选择包括Fh和其他,取决于用户体验的哲学。

是否有算法在给定字符串列表的情况下生成唯一的助记符字母以识别每个字符串?通过" mnemonic",我的意思是该选项应该建议字母(如我的例子中所示),这样很容易记住哪个是哪个(而不是只是将所有内容映射到a,b,c或x,y,z)。

正如我上面提到的,根据你的喜好,有多种方法可以做到这一点:大写字母,第一个单词中的字母,次要独特单词的字母等。对于这个问题,我真的不是关心这些,所以请随意使用自己的规则 - 只要算法产生合理的用户友好结果。

1 个答案:

答案 0 :(得分:1)

我见过的基线算法如下:

  1. 选择第一个字母(如您的示例所示)。跟踪您选择的字母。
  2. 如果选择了所选字母,请选择下一个字母(如果有)。
  3. 如果没有更多的字母,那么按字典顺序选择一个(字母表中的第一个免费字母)
  4. 如果没有更多的信件,不要选择任何东西,该选项将无法寻址。这对于可点击的菜单也很有意义。
  5. 当然,您可以进行调整:

    • 您的终端/操作系统惯例是否区分大写和小写?你可以在第2步之后和第3步之前使用它(如果没有剩下的字母可以使用,请使用大写字母)。

    • 你可以使用和检测 alt ctrl win

    • 是否有预先指定的快捷方式需要维护(例如 s 保存)?在第一步之前分配它们。