字符串中的第一个字符,如果它出现在子序列中,那么它肯定是位于第一位置的,而不可能是第二,第三。
比如“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(尼古拉斯)”。
“就是你了!”
杨成得出了结论,并没有停止思索。
他发现这个算法有一个前提,那就是,原字符串要求没有重复的字母出现。
如果有重复的字母,那这个算法就会失效。
换句话说,这个前提降低了问题的难度。
另外,给定的子序列是充足的,足以构成一个完整的字符串,这也是能够解题的关键。
比如“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(尼古拉斯)”。
“就是你了!”
杨成得出了结论,并没有停止思索。
他发现这个算法有一个前提,那就是,原字符串要求没有重复的字母出现。
如果有重复的字母,那这个算法就会失效。
换句话说,这个前提降低了问题的难度。
另外,给定的子序列是充足的,足以构成一个完整的字符串,这也是能够解题的关键。