LeetCode 2839.判断通过操作能否让字符串相等 I:if-else(两两判断)

【LetMeFly】2839.判断通过操作能否让字符串相等 I:if-else(两两判断)

力扣题目链接:https://leetcode.cn/problems/check-if-strings-can-be-made-equal-with-operations-i/

给你两个字符串 s1s2 ,两个字符串的长度都为 4 ,且只包含 小写 英文字母。

你可以对两个字符串中的 任意一个 执行以下操作 任意 次:

  • 选择两个下标 ij 且满足 j - i = 2 ,然后 交换 这个字符串中两个下标对应的字符。

如果你可以让字符串s1s2 相等,那么返回 true ,否则返回 false

示例 1:

复制代码
输入:s1 = "abcd", s2 = "cdab"
输出:true
解释: 我们可以对 s1 执行以下操作:
- 选择下标 i = 0 ,j = 2 ,得到字符串 s1 = "cbad" 。
- 选择下标 i = 1 ,j = 3 ,得到字符串 s1 = "cdab" = s2 。

示例 2:

复制代码
输入:s1 = "abcd", s2 = "dacb"
输出:false
解释:无法让两个字符串相等。

提示:

  • s1.length == s2.length == 4
  • s1s2 只包含小写英文字母。

解题方法:两两判断

字符串长度固定为 4 4 4,字符 s [ i ] s[i] s[i]只能与字符 s [ i + 2 ] s[i+2] s[i+2]交换,相当于第一个字符只能与第三个字符交换、第二个字符只能与第四个字符交换。

所以判断下两个字符串的第一个和第三个字符是否相等或交换后相等,并且第二第四个字符也相等或交换后相等,就好了。

  • 时间复杂度 O ( 1 ) O(1) O(1)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
cpp 复制代码
/*
 * @LastEditTime: 2026-03-29 19:41:22
 */
#include <iostream>
class Solution {
private:
    inline bool same2(const string& a, const string& b, int i, int j) {
        return a[i] == b[i] && a[j] == b[j] || a[i] == b[j] && a[j] == b[i];
    }
public:
    bool canBeEqual(const string& s1, const string& s2) {
        return same2(s1, s2, 0, 2) && same2(s1, s2, 1, 3);
    }
};

AC,100.00%,100.00%

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
阿豪学编程19 小时前
LeetCode724.:寻找数组的中心下标
算法·leetcode
墨韵流芳19 小时前
CCF-CSP第41次认证第三题——进程通信
c++·人工智能·算法·机器学习·csp·ccf
csdn_aspnet20 小时前
C# 求n边凸多边形的对角线数量(Find number of diagonals in n sided convex polygon)
开发语言·算法·c#
禹中一只鱼20 小时前
【力扣热题100学习笔记】 - 哈希
java·学习·leetcode·哈希算法
凌波粒20 小时前
LeetCode--349.两个数组的交集(哈希表)
java·算法·leetcode·散列表
paeamecium1 天前
【PAT甲级真题】- Student List for Course (25)
数据结构·c++·算法·list·pat考试
Book思议-1 天前
【数据结构】栈与队列全方位对比 + C 语言完整实现
c语言·数据结构·算法··队列
SteveSenna1 天前
项目:Trossen Arm MuJoCo
人工智能·学习·算法
NAGNIP1 天前
一文搞懂CNN经典架构-DenseNet!
算法·面试
道法自然|~1 天前
BugCTF黄道十二宫
算法·密码学