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和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
Zephyr_015 小时前
Leedcode算法题
java·算法
流年如夢15 小时前
栈和列队(LeetCode)
数据结构·算法·leetcode·链表·职场和发展
Hello.Reader16 小时前
算法基础(十)——分治思想把大问题拆成小问题
java·开发语言·算法
绛橘色的日落(。・∀・)ノ17 小时前
机器学习之评估与偏差方差分析
算法
消失的旧时光-194317 小时前
C语言对象模型系列(四)《Linux 内核里的 container_of 到底是什么黑魔法?》—— 一篇讲透 Linux 内核的“对象模型”核心技巧
linux·c语言·算法
AI_Ming18 小时前
从0开始学AI:层归一化,原来是这回事!
算法·ai编程
WL_Aurora18 小时前
备战蓝桥杯国赛【Day 8】
算法·蓝桥杯
智者知已应修善业18 小时前
【51单片机模拟生日蜡烛】2023-10-10
c++·经验分享·笔记·算法·51单片机
MediaTea18 小时前
Scikit-learn:从数据到结构——无监督学习的最小闭环
人工智能·学习·算法·机器学习·scikit-learn
智者知已应修善业18 小时前
【51单片机如何让LED灯从一亮到八,再从八亮到一】2023-10-13
c++·经验分享·笔记·算法·51单片机