C++算法学习(力扣:859. 亲密字符串)
给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。
交换字母的定义是取两个下标 i 和 j (下标从 0 开始),只要 i!=j 就交换 A[i] 和 A[j] 处的字符。例如,在 “abcd” 中交换下标 0 和下标 2 的元素可以生成 “cbad” 。
示例 1:
输入: A = "ab", B = "ba"
输出: true
解释: 你可以交换 A[0] = 'a' 和 A[1] = 'b' 生成 "ba",此时 A 和 B 相等。
示例 2:
输入: A = "ab", B = "ab"
输出: false
解释: 你只能交换 A[0] = 'a' 和 A[1] = 'b' 生成 "ba",此时 A 和 B 不相等。
示例 3:
输入: A = "aa", B = "aa"
输出: true
解释: 你可以交换 A[0] = 'a' 和 A[1] = 'a' 生成 "aa",此时 A 和 B 相等。
示例 4:
输入: A = "aaaaaaabc", B = "aaaaaaacb"
输出: true
示例 5:
输入: A = "", B = "aa"
输出: false
提示:
0 <= A.length <= 20000
0 <= B.length <= 20000
A 和 B 仅由小写字母构成。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/buddy-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
拿到这个题,我就想= =直接写,把所有条件A和B有一个不同,两个不同,三个不同都列出来就好啦。
class Solution {public:bool buddyStrings(string A, string B) {vector<int> a;if(A.size() != B.size()) return 0;for(int i = 0;i<A.size();i++){if(A[i] != B[i]) a.push_back(i);}//当有两个以上不同或一个不同if(a.size() > 2) return 0;//当有两个不同else if(a.size() == 2 && (A[a[0]]==B[a[1]] && A[a[1]]==B[a[0]])) return 1;//当没有不同else if(a.empty()){for(int i=0;i<A.size();i++)if(count(A.begin(),A.end(),A[i])>1)return 1;}return 0;}
};
C++算法学习(力扣:859. 亲密字符串)相关推荐
- C++算法学习(力扣:1544. 整理字符串)
给你一个由大小写英文字母组成的字符串 s . 一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件: 若 s[i] ...
- C++算法学习(力扣:402. 移掉K位数字)
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
- C++算法学习(力扣:328. 奇偶链表)
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝试使用原地算法完成.你的算法的空间复杂度应为 O(1),时 ...
- C++算法学习(力扣:1003. 检查替换后的词是否有效)
给定有效字符串 "abc". 对于任何有效的字符串 V,我们可以将 V 分成两个部分 X 和 Y,使得 X + Y(X 与 Y 连接)等于 V.(X 或 Y 可以为空.)那么,X ...
- C++算法学习(力扣:1091. 二进制矩阵中的最短路径)
在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1). 一条从左上角到右下角.长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, -, C_k 组成: 相邻单 ...
- C++算法学习(力扣:面试题 16.04. 井字游戏)
设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" &quo ...
- C++算法学习(力扣:201. 数字范围按位与)
给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点). 示例 1: 输入: [5,7] 输出: 4 ...
- C++算法学习(力扣:134. 加油站)
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升.你从其中的一个加 ...
- C++算法学习(力扣:1122. 数组的相对排序)
给你两个数组,arr1 和 arr2, arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序 ...
最新文章
- java 75-76
- 【Android 插件化】多开原理 | 使用插件化技术的恶意应用 | 插件化的其它风险 | 应用开发推荐方案
- 百度定位sdk使用说明
- 使用 soapUI 测试 REST 服务
- 怎样用c语言定义高幂整数,位操作运算的奇技淫巧!(附源码)
- pythonweb项目面试题_python和web框架面试题目整理(1)
- 高盛 CEO:没背景的孩子,请与有野心的人为伍!
- mysql5.5免安装包_mysql免安装版5.5
- blackfriday markdown的自动换行 go lang 正则替换字符串时遇到的坑,转义解析其中的 $1 $name 等
- JavaScript的特效
- vs2005让程序在win7下获得管理员权限
- 窄带包络解调python实现_对数据包络分析法DEA的再理解,以及python 实现
- ccf csp 201912-1报数(python)
- 2022前端未来发展趋势
- C语言制作扫雷游戏(结合图形库)
- zimbra 证书过期--zimbra使用
- arduino设备跑 ros service server 的波折记
- LLD-LLVM链接器
- 在计算机领域cda,什么是CDA
- SEO优化之生成静态网页