困难
给你两个长度相等的字符串 word1 和 word2。你的任务是将 word1 转换成 word2。
为此,可以将 word1 分割成一个或多个连续子字符串。对于每个子字符串 substr,可以执行以下操作:
-
替换:将
substr中任意一个索引处的字符替换为另一个小写字母。 -
交换:交换
substr中任意两个字符的位置。 -
反转子串:将
substr进行反转。
每种操作计为 一次 ,并且每个子串中的每个字符在每种操作中最多只能使用一次(即任何字符的下标不能参与超过一次替换、交换或反转操作)。
返回将 word1 转换为 word2 所需的 最小操作数 。
子串 是字符串中任意一个连续且非空的字符序列。
示例 1:
输入: word1 = "abcdf", word2 = "dacbe"
输出: 4
解释:
将 word1 分割为 "ab"、"c" 和 "df"。操作如下:
- 对于子串
"ab":- 执行类型 3 的操作:
"ab" -> "ba"。 - 执行类型 1 的操作:
"ba" -> "da"。
- 执行类型 3 的操作:
- 对于子串
"c":无需操作。 - 对于子串
"df":- 执行类型 1 的操作:
"df" -> "bf"。 - 执行类型 1 的操作:
"bf" -> "be"。
- 执行类型 1 的操作:
示例 2:
输入: word1 = "abceded", word2 = "baecfef"
输出: 4
解释:
将 word1 分割为 "ab"、"ce" 和 "ded"。操作如下:
- 对于子串
"ab":- 执行类型 2 的操作:
"ab" -> "ba"。
- 执行类型 2 的操作:
- 对于子串
"ce":- 执行类型 2 的操作:
"ce" -> "ec"。
- 执行类型 2 的操作:
- 对于子串
"ded":- 执行类型 1 的操作:
"ded" -> "fed"。 - 执行类型 1 的操作:
"fed" -> "fef"。
- 执行类型 1 的操作:
示例 3:
输入: word1 = "abcdef", word2 = "fedabc"
输出: 2
解释:
将 word1 分割为 "abcdef"。操作如下:
- 对于子串
"abcdef":- 执行类型 3 的操作:
"abcdef" -> "fedcba"。 - 执行类型 2 的操作:
"fedcba" -> "fedabc"。
- 执行类型 3 的操作:
提示:
1 <= word1.length == word2.length <= 100word1和word2仅由小写英文字母组成。