第三题使用回溯AC过了😂 大概思路:使用一个map来存储母串中每个字符的位置,因为字符可能重复出现,所以位置坐标有可能不止一个,就用list来存HashMap<Character, LinkedList<Integer>>。然后用一个HashMap<Integer,Long>来存储从开始到走到当前位置的步数。遍历子串,取出每个字符后得到字符在母串中的位置,并求从当前位置到字符位置(即下一步位置),往左走与往右走的步数的最小值,存起来。然后下一步位置可能有多个(因为字符重复嘛),这多个位置都成了当前位置,继续取子串的下一个字符。最后遍历map,取出最小的value就是结果。
1 4

相关推荐

牛客网
牛客企业服务