前段模板的网站,在线优化网站,100平米简约办公室,wonder audio wordpress亲密字符串
859. 亲密字符串 - 力扣#xff08;LeetCode#xff09;
题目#xff1a;
给你两个字符串 s 和 goal #xff0c;只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果#xff0c;就返回 true #xff1b;否则返回 false 。
交换字母的定义是…亲密字符串
859. 亲密字符串 - 力扣LeetCode
题目
给你两个字符串 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 相等。提示
1 s.length, goal.length 2 * 104s 和 goal 由小写英文字母组成
自己的思路和代码
思路 可以分成两种情况 第一种情况是s与goal相等当数组的长度等于1时直接返回false。当数组的长度大于1时查看s数组中有没有重复的元素如果有返回true没有返回false。 第二种情况是s与goal不相等同理当数组的长度等于1时直接返回false。当数组的长度大于1时查看s数组和goal数组中是否正好有两个元素是不相等的并且这两个元素是交叉相等的返回true否则返回false。
代码
class Solution {
public:bool buddyStrings(string s, string goal) {if(s.size()!goal.size()) return false;if(s goal) {if(s.size()1) {return false;} else {int temp[26] {0};for(int i0; is.size(); i) {temp[s[i] - a];}for(int i0; i26; i) {if(temp[i]1) return true; }return false;}} else {if(s.size()1) return false;int temp 0;char s_temp[2], g_temp[2];for(int i0; is.size(); i) {if(s[i] ! goal[i]) {if(temp2) {s_temp[temp] s[i];g_temp[temp] goal[i];temp; } else {return false;}}}if(temp1) return false;if(s_temp[0]g_temp[1] s_temp[1]g_temp[0]) {return true;} else {return false;}} //return true;}
};