如何使用ps做网站,品牌设计是做什么,做任务免费领取东西的网站,怎么黑人网站859. 亲密字符串
给你两个字符串 s 和 goal #xff0c;只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果#xff0c;就返回 true #xff1b;否则返回 false 。
交换字母的定义是#xff1a;取两个下标 i 和 j #xff08;下标从 0 开始#xff09;且满足 …859. 亲密字符串
给你两个字符串 s 和 goal 只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果就返回 true 否则返回 false 。
交换字母的定义是取两个下标 i 和 j 下标从 0 开始且满足 i ! j 接着交换 s[i] 和 s[j] 处的字符。
例如在 “abcd” 中交换下标 0 和下标 2 的元素可以生成 “cbad” 。
示例 1输入s ab, goal ba
输出true
解释你可以交换 s[0] a 和 s[1] b 生成 ba此时 s 和 goal 相等。示例 2输入s ab, goal ab
输出false
解释你只能交换 s[0] a 和 s[1] b 生成 ba此时 s 和 goal 不相等。示例 3输入s aa, goal aa
输出true
解释你可以交换 s[0] a 和 s[1] a 生成 aa此时 s 和 goal 相等。示例 4输入s aaaaaaabc, goal aaaaaaacb
输出true提示
1 s.length, goal.length 2 * 10410^4104s 和 goal 由小写英文字母组成
解题思路
分为三种情况进行讨论
第一种就是满足亲密字符串定义的字符串s和字符串goal之间恰好有两个位置的字符是不相同的而且我们恰好可以通过交换字符串s这两个下标的元素使得二者相等第二种情况就是字符串s和字符串goal只有一个位置上的字符是不相同的因此我们不存在与其交换的下标因此这种情况应该返回false第三种情况就是两个字符串是完全相等的但是他们存在两个不同下标的字符是相同的因此我们可以通过交换这两个下标达到不改变原字符串使两字符串相等的目的。
代码
class Solution {
public:bool buddyStrings(string s, string goal) {int n s.size();int dif1 -1;for (int i 0; i n; i) {if (s[i] ! goal[i]) {if (dif1 -1)dif1 i;else {swap(goal[i], goal[dif1]);break;}}}if (dif1 -1) {sort(s.begin(), s.end());for (int j 1; j n; j) {if (s[j] s[j - 1])return true;}return false;} elsereturn sgoal;}
};