本题考查字符频次统计 + 枚举交换字符对 + 不同字符计数增量公式,可按以下步骤处理:
resA、resB 中 26 个小写字母出现次数,并记 dA、dB 为两串当前的不同字符个数。resA 取出的字符 ca」与「从 resB 取出的字符 cb」(各 26 种,且须在原串中出现)。一次交换只与这两个字符有关,无需遍历下标 O(nm)。ca != cb 时):
resA 失去 ca、获得 cb:给定两个仅由小写字母组成的字符串 resA 和 resB。你可以执行恰好一次操作:选择下标 i 和 j,交换 resA[i] 与 resB[j]。问是否存在一种交换,使交换后两个字符串中不同字符的数量相等。
如果存在该交换,则返回交换后resA和resB中不同字符的数量;如果有多种交换方式则采用让两个字符串中不同的字符的数量最少的方式。
如果不存在任何交换方式则返回 −1。
提示:
输入
"ac","b"
输出
-1
说明
交换任何一组下标都会导致第一个字符串中有2 个不同的字符,而在第二个字符串中只有1个不同字符。故无法完成返回−1。
输入
"abcc","aab"
输出
2
说明
交换第一个字符串的下标 1 和第二个字符串的下标 0。之后得到 word1 = "aacc" 和 word2 = "abb",各有 2 个不同字符。
输入
"abcde","fghij"
输出
5
说明
无论交换哪一组下标,两个字符串中都会有5个不同字符。