看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~
谁能九层台,不用累土起!
题目
给你两个字符串s
和goal
,只要我们可以通过交换s
中的两个字母得到与goal
相等的结果,就返回true
;否则返回false
。
交换字母的定义是:取两个下标i
和j
(下标从0
开始)且满足i!=j
,接着交换s[i]
和s[j]
处的字符。
- 例如,在
abcd
中交换下标0
和下标2
的元素可以生成cbad
。
示例 1:
1 | 输入:s = "ab", goal = "ba" |
示例 2:
1 | 输入:s = "ab", goal = "ab" |
示例 3:
1 | 输入:s = "aa", goal = "aa" |
示例 4:
1 | 输入:s = "aaaaaaabc", goal = "aaaaaaacb" |
提示:
1 <= s.length, goal.length <= 2 * 104
s
和goal
由小写英文字母组成
解题思路
- 如果
s
和goal
长度不同或s
的长度只有1
,都为false
- 如果
s===goal
,那么s
中有重复元素才能满足题意 - 如果
s!=goal
,则s
和goal
只能有2个不同的元素,并且需要满足元素交换位置后相同
这亲密字符串一点也不亲密👀 哈哈~😆
解题代码
1 | var buddyStrings = function(s, goal) { |
如有任何问题或建议,欢迎留言讨论!