class Solution {
public:
bool checkStrings(string s1, string s2) {
}
};
7005. 判断通过操作能否让字符串相等 II
给你两个字符串 s1
和 s2
,两个字符串长度都为 n
,且只包含 小写 英文字母。
你可以对两个字符串中的 任意一个 执行以下操作 任意 次:
i
和 j
,满足 i < j
且 j - i
是 偶数,然后 交换 这个字符串中两个下标对应的字符。
如果你可以让字符串 s1
和 s2
相等,那么返回 true
,否则返回 false
。
示例 1:
输入:s1 = "abcdba", s2 = "cabdab" 输出:true 解释:我们可以对 s1 执行以下操作: - 选择下标 i = 0 ,j = 2 ,得到字符串 s1 = "cbadba" 。 - 选择下标 i = 2 ,j = 4 ,得到字符串 s1 = "cbbdaa" 。 - 选择下标 i = 1 ,j = 5 ,得到字符串 s1 = "cabdab" = s2 。
示例 2:
输入:s1 = "abe", s2 = "bea" 输出:false 解释:无法让两个字符串相等。
提示:
n == s1.length == s2.length
1 <= n <= 105
s1
和 s2
只包含小写英文字母。原站题解
php 解法, 执行用时: 56 ms, 内存消耗: 19.4 MB, 提交时间: 2023-09-04 09:45:38
class Solution { /** * @param String $s1 * @param String $s2 * @return Boolean */ function checkStrings($s1, $s2) { $arr1 = array_fill(0, 2, array_fill(0, 26, 0)); $arr2 = array_fill(0, 2, array_fill(0, 26, 0)); for ( $i = 0; $i < strlen($s1); $i++ ) { $arr1[$i % 2][ord($s1[$i]) - ord('a')]++; $arr2[$i % 2][ord($s2[$i]) - ord('a')]++; } return $arr1 == $arr2; } }
golang 解法, 执行用时: 12 ms, 内存消耗: 6.3 MB, 提交时间: 2023-09-04 09:45:07
func checkStrings(s1 string, s2 string) bool { var cnt1, cnt2 [2][26]int for i, c := range s1 { cnt1[i%2][c-'a']++ cnt2[i%2][s2[i]-'a']++ } return cnt1 == cnt2 }
cpp 解法, 执行用时: 40 ms, 内存消耗: 14.7 MB, 提交时间: 2023-09-04 09:44:46
class Solution { public: bool checkStrings(string s1, string s2) { int cnt1[2][26]{}, cnt2[2][26]{}; for (int i = 0; i < s1.length(); i++) { cnt1[i % 2][s1[i] - 'a']++; cnt2[i % 2][s2[i] - 'a']++; } return memcmp(cnt1, cnt2, sizeof(cnt1)) == 0; } };
java 解法, 执行用时: 6 ms, 内存消耗: 43.4 MB, 提交时间: 2023-09-04 09:44:24
class Solution { public boolean checkStrings(String s1, String s2) { var cnt1 = new int[2][26]; var cnt2 = new int[2][26]; for (int i = 0; i < s1.length(); i++) { cnt1[i % 2][s1.charAt(i) - 'a']++; cnt2[i % 2][s2.charAt(i) - 'a']++; } return Arrays.deepEquals(cnt1, cnt2); } }
python3 解法, 执行用时: 100 ms, 内存消耗: 16.6 MB, 提交时间: 2023-09-04 09:43:58
class Solution: def checkStrings(self, s1: str, s2: str) -> bool: return Counter(s1[::2]) == Counter(s2[::2]) and Counter(s1[1::2]) == Counter(s2[1::2])