🗒️2546. 执行逐位运算使字符串相等
2025-2-22
| 2025-2-22
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Feb 22, 2025 01:45 AM
给你两个下标从 0 开始的 二元 字符串 s 和 target ,两个字符串的长度均为 n 。你可以对 s 执行下述操作 任意 次:
  • 选择两个 不同 的下标 i 和 j ,其中 0 <= i, j < n 。
  • 同时,将 s[i] 替换为 (s[i] OR s[j]) ,s[j] 替换为 (s[i] XOR s[j]) 。
例如,如果 s = "0110" ,你可以选择 i = 0 和 j = 2,然后同时将 s[0] 替换为 (s[0] OR s[2] = 0 OR 1 = 1),并将 s[2] 替换为 (s[0] XOR s[2] = 0 XOR 1 = 1),最终得到 s = "1110" 。
如果可以使 s 等于 target ,返回 true ,否则,返回 false 。

位运算——脑筋急转弯

从上面的规律,我们发现 00 的组合对最后的结果没有影响,而且我们在有 1 的情况下,得到 00。
因此,有以下失败情况:
  1. s全为0,但target有1
  1. s有1,但target全为0
也就是两者都含有 1,或者两者都没有 1.

📎 参考

  • 【题单】位运算
  • 1558. 得到目标数组的最少函数调用次数645. 错误的集合
    Loading...