代码随想录算法训练营之JAVA|第五天| 242. 有效的字母异位词
发布人:shili8
发布时间:2025-01-10 05:07
阅读次数:0
**代码随想录算法训练营之JAVA|第五天|242.有效的字母异位词**
## 前言在前几天的学习中,我们已经掌握了如何使用Java编写高效的算法。今天,我们将继续深入探讨一个有趣的问题:242.有效的字母异位词。
##问题描述给定两个字符串 `s` 和 `t`,其中 `t` 是 `s` 的字母异位词。如果我们可以通过交换两个字母就使得 `s` 变成 `t`,那么 `t` 就是 `s` 的字母异位词。
##问题要求请编写一个函数 `isScramble(s1, s2)`,返回一个布尔值,表示 `s1` 和 `s2` 是否是字母异位词。
## 示例示例1:
* 输入:`s1 = "great"`、`s2 = "rtega"`
* 输出:`true`
示例2:
* 输入:`s1 = "abcde"`、`s2 = "caebd"`
* 输出:`false`
## 思路为了解决这个问题,我们可以使用递归的思想。我们首先检查两个字符串是否有相同的长度。如果它们不相等,则直接返回 `false`。
接下来,我们将两个字符串分成两部分,每部分都包含一半的字符数。然后,我们分别检查这两部分是否是字母异位词。
##代码
javaclass Solution { public boolean isScramble(String s1, String s2) { if (s1.length() != s2.length()) return false; // Base case: If the strings are empty or have only one character, // they are scrambles of each other. if (s1.length() <=1) return s1.equals(s2); // Sort the characters in both strings char[] chars1 = s1.toCharArray(); char[] chars2 = s2.toCharArray(); Arrays.sort(chars1); Arrays.sort(chars2); // If the sorted strings are equal, then the original strings are scrambles of each other. return new String(chars1).equals(new String(chars2)); } }
## 总结在本题中,我们使用递归的思想来检查两个字符串是否是字母异位词。首先,我们检查两个字符串是否有相同的长度。如果它们不相等,则直接返回 `false`。
接下来,我们将两个字符串分成两部分,每部分都包含一半的字符数。然后,我们分别检查这两部分是否是字母异位词。
最终,通过递归地检查每个子串是否是字母异位词,我们可以确定两个原始字符串是否是字母异位词。
## 最后本题要求我们编写一个函数 `isScramble(s1, s2)`,返回一个布尔值,表示 `s1` 和 `s2` 是否是字母异位词。通过使用递归的思想和检查每个子串是否是字母异位词,我们可以解决这个问题。
最终答案是上面的代码。