给定两个由小写字母构成的字符串 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. 亲密字符串)相关推荐

  1. C++算法学习(力扣:1544. 整理字符串)

    给你一个由大小写英文字母组成的字符串 s . 一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件: 若 s[i] ...

  2. C++算法学习(力扣:402. 移掉K位数字)

    给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...

  3. C++算法学习(力扣:328. 奇偶链表)

    给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝试使用原地算法完成.你的算法的空间复杂度应为 O(1),时 ...

  4. C++算法学习(力扣:1003. 检查替换后的词是否有效)

    给定有效字符串 "abc". 对于任何有效的字符串 V,我们可以将 V 分成两个部分 X 和 Y,使得 X + Y(X 与 Y 连接)等于 V.(X 或 Y 可以为空.)那么,X ...

  5. C++算法学习(力扣:1091. 二进制矩阵中的最短路径)

    在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1). 一条从左上角到右下角.长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, -, C_k 组成: 相邻单 ...

  6. C++算法学习(力扣:面试题 16.04. 井字游戏)

    设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" &quo ...

  7. C++算法学习(力扣:201. 数字范围按位与)

    给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点). 示例 1: 输入: [5,7] 输出: 4 ...

  8. C++算法学习(力扣:134. 加油站)

    在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升.你从其中的一个加 ...

  9. C++算法学习(力扣:1122. 数组的相对排序)

    给你两个数组,arr1 和 arr2, arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序 ...

最新文章

  1. java 75-76
  2. 【Android 插件化】多开原理 | 使用插件化技术的恶意应用 | 插件化的其它风险 | 应用开发推荐方案
  3. 百度定位sdk使用说明
  4. 使用 soapUI 测试 REST 服务
  5. 怎样用c语言定义高幂整数,位操作运算的奇技淫巧!(附源码)
  6. pythonweb项目面试题_python和web框架面试题目整理(1)
  7. 高盛 CEO:没背景的孩子,请与有野心的人为伍!
  8. mysql5.5免安装包_mysql免安装版5.5
  9. blackfriday markdown的自动换行 go lang 正则替换字符串时遇到的坑,转义解析其中的 $1 $name 等
  10. JavaScript的特效
  11. vs2005让程序在win7下获得管理员权限
  12. 窄带包络解调python实现_对数据包络分析法DEA的再理解,以及python 实现
  13. ccf csp 201912-1报数(python)
  14. 2022前端未来发展趋势
  15. C语言制作扫雷游戏(结合图形库)
  16. zimbra 证书过期--zimbra使用
  17. arduino设备跑 ros service server 的波折记
  18. LLD-LLVM链接器
  19. 在计算机领域cda,什么是CDA
  20. SEO优化之生成静态网页

热门文章

  1. Linux手动导入导出mysql数据库
  2. 文档未记录的API之setContentToHTMLString
  3. 一个学习Python的好链接
  4. Leetcode 64. 最小路径和 -- DP算法
  5. 牛客多校第六场 G Is Today Friday? 蔡勒公式/排列
  6. 小程序之支付(前端)
  7. redis 基础数据结构实现
  8. MySql基础笔记(三)其他重要的事情
  9. 9.26-CSS 背景 字体 文本 边框 以及其他
  10. sqlserver中分区函数 partition by的用法