本文最后更新于 452 天前,其中的信息可能已经有所发展或是发生改变。
本题的主要思路是以 "fattyhappy" 为模板,对字符串进行模板匹配。
我们可以从原字符串的每一个字符开始,统计接下来 10 个数字与 "fattyhappy" 的不同字符数,并根据不同的字符数进行对应的操作。我们记不同字符数为 diff。
1.diff >= 3
该情况下无论如何交换都至少会有一个字符与模板字符串不同。
故当 diff >= 3 时不存在答案。
2.diff == 2
该情况下我们尝试交换不同的两个字符。
如果交换后与模板字符串相同,则可以将这两个位置作为答案进行输出。
3.diff == 1
该情况下我们需要将这个不同的字符与所有其他字符尝试进行交换。
如果交换后与模板字符串相同,则可以将这两个位置作为答案进行输出。
4.diff == 0
该情况下我们已经匹配到了完整的字符串。但是题目要求我们必须进行一次交换。
观察到 "fattyhappy" 中有重复的字符。我们只需要在单词内任选两个相同字符进行交换即可。