LeetCode-859. 亲密字符串
2021/11/24 6:12:00
本文主要是介绍LeetCode-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 * 104
s 和 goal 由小写英文字母组成
#include <iostream> #include <string> #include <unordered_map> using namespace std; class Solution { public: bool buddyStrings(string s, string goal) { int count = 0; unordered_map<char, int> hashMp1; unordered_map<char, int> hashMp2; bool isBigThanTwo = false; if (s.length() != goal.length()) { return false; } for (int i = 0; i < s.size(); i++) { if (hashMp1.count(s[i]) == 0) { hashMp1[s[i]] = 1; } else { hashMp1[s[i]]++; } if (hashMp2.count(goal[i]) == 0) { hashMp2[goal[i]] = 1; } else { hashMp2[goal[i]]++; } if (s[i] != goal[i]) { count++; } } unordered_map<char, int>::iterator it = hashMp1.begin(); while (it != hashMp1.end()) { if (hashMp1[it->first] > 1) { isBigThanTwo = true; } if (hashMp1[it->first] != hashMp2[it->first]) { return false; } it++; } if (isBigThanTwo && s == goal) { return true; } if (count == 2) { return true; } return false; } }; int main() { Solution* ps = new Solution(); cout << ps->buddyStrings("ab", "ba"); return 0; }
这篇关于LeetCode-859. 亲密字符串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25TypeScript基础知识详解
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享
- 2024-12-25flutter项目 as提示Cannot resolve symbol 'embedding'提示什么意思?-icode9专业技术文章分享
- 2024-12-24怎么切换 Git 项目的远程仓库地址?-icode9专业技术文章分享
- 2024-12-24怎么更改 Git 远程仓库的名称?-icode9专业技术文章分享