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


小说:编程之战   作者:程序小猿   类别:未来世界   加入书签   【章节错误/点此举报】   【更新慢了/点此举报
推荐阅读: 永恒剑主 | 星光灿烂 | 巨星夫妻 | 弑天刃 | 九重神格 | 超警美利坚 | 步步惊唐 | 绝世天君 | 都市幻界 | 异度
笔趣阁 //www.boquge.com/book/105094/ 为您提供编程之战全文阅读!注册本站用户,获取免费书架,追书更方便!
  字符串中的第一个字符,如果它出现在子序列中,那么它肯定是位于第一位置的,而不可能是第二,第三。
  比如“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(尼古拉斯)”。
  “就是你了!”
  杨成得出了结论,并没有停止思索。
  他发现这个算法有一个前提,那就是,原字符串要求没有重复的字母出现。
  如果有重复的字母,那这个算法就会失效。
  换句话说,这个前提降低了问题的难度。
  另外,给定的子序列是充足的,足以构成一个完整的字符串,这也是能够解题的关键。