看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~
谁能九层台,不用累土起!
题目
给你两个字符串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 * 104s和goal由小写英文字母组成
解题思路
- 如果
s和goal长度不同或s的长度只有1,都为false - 如果
s===goal,那么s中有重复元素才能满足题意 - 如果
s!=goal,则s和goal只能有2个不同的元素,并且需要满足元素交换位置后相同
这亲密字符串一点也不亲密👀 哈哈~😆
解题代码
1 | var buddyStrings = function(s, goal) { |
如有任何问题或建议,欢迎留言讨论!