笔趣阁 > 科幻小说 > 编程之战 > 章节目录 第一百零八章 莫斯科的陌生人(下)

 推荐阅读: 重生弃少归来 黎明之剑 说好的末世呢 七根凶简 民调局异闻录之勉传 学霸的黑科技系统 无限英灵神座 快穿攻略,病娇男主,宠翻天! 终极透视眼 纵横诸天的武者

编程之战 第一百零八章 莫斯科的陌生人(下)


    字符串中的第一个字符,如果它出现在子序列中,那么它肯定是位于第一位置的,而不可能是第二,第三。
    比如“abc”的第一个字符“a”,它在子序列“ac”中,就是处于第一位。
    这个问题的关键在于,找出子序列中,始终出现在第一位的字符,它就是原字符串的第一个字符。
    [“N“,“C“,“L“]
    [“I“,“O“,“A“]
    [“C“,“O“,“S“]
    [“I“,“C“,“O“]
    [“O“,“L“,“S“]
    这五个子序列,满足这个条件的第一个字符是“N”,所以它就是原字符串的第一个字符。
    然后,去掉“N”在子序列中的所有存在,继续找始终出现在第一位的字符。
    [“C“,“L“]
    [“I“,“O“,“A“]
    [“C“,“O“,“S“]
    [“I“,“C“,“O“]
    [“O“,“L“,“S“]
    可以发现“I”满足条件,而“C”不满足,因为它在第四个子序列中,出现在了第二的位置。
    去掉“I”在子序列中的所有存在,继续查找。
    [“C“,“L“]
    [“O“,“A“]
    [“C“,“O“,“S“]
    [“C“,“O“]
    [“O“,“L“,“S“]
    “C”满足条件,去掉存在,继续查找。
    [“L“]
    [“O“,“A“]
    [“O“,“S“]
    [“O“]
    [“O“,“L“,“S“]
    “O”满足条件,去掉存在,继续查找。
    [“L“]
    [“A“]
    [“S“]
    []
    [“L“,“S“]
    “L”满足条件,去掉存在,继续查找。
    []
    [“A“]
    [“S“]
    []
    [“S“]
    “A”满足条件,去掉存在,继续查找。
    []
    []
    [“S“]
    []
    [“S“]
    “S”满足条件,去掉存在。
    []
    []
    []
    []
    []
    此时,所有子序列均为空,查找结束。
    然后,将这些满足条件的所有字符,依次缀连在一起,就能获得重要线索。
    “NICOLAS(尼古拉斯)”。
    “就是你了!”
    杨成得出了结论,并没有停止思索。
    他发现这个算法有一个前提,那就是,原字符串要求没有重复的字母出现。
    如果有重复的字母,那这个算法就会失效。
    换句话说,这个前提降低了问题的难度。
    另外,给定的子序列是充足的,足以构成一个完整的字符串,这也是能够解题的关键。

温馨提示:方向键左右(← →)前后翻页,上下(↑ ↓)上下滚用, 回车键:返回列表

上一章章节目录下一章