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 si si只能与字符 s i + 2 si+2 si+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和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
玖玥拾8 分钟前
LeetCode 88 合并两个有序数组
算法·leetcode
数据皮皮侠AI23 分钟前
上市公司数字供应链金融指数(2010-2024)
大数据·人工智能·算法
Hi李耶1 小时前
【LeetCode】541.反转字符串 II
算法·leetcode·职场和发展
shylyly_1 小时前
104.二叉树的最大深度
数据结构·算法·104.二叉树的最大深度
AI科技星2 小时前
曲率‑挠率与 $\boldsymbol{\omega/c}$ 的关系、精算验证及其物理意义
c语言·开发语言·线性代数·算法·决策树·机器学习·ai科技星
沐籽李2 小时前
HuDiff在抗体人源化项目中的工程化落地
人工智能·算法·aidd·抗体设计
依然范特东2 小时前
强化学习笔记6--IS、PPO、TD、DQN、Actor-Critic
笔记·算法
一次旅行4 小时前
RLHF全链路深度解析:Reward Model数学推导+PPO完整实战,对比GRPO轻量化方案
人工智能·算法·机器学习
Wang's Blog4 小时前
AI Agent白手起家29: Few Shot 提示词工程实战
人工智能·算法
June`5 小时前
warp shuffle指令
c++·人工智能·算法·cuda