Question

859. Buddy Strings

Solution

题目大意:

两个字符串,其中一个字符串任意两个字符互换后与另一个字符串相等,只能互换一次

思路:

diff 记录不同字符数

两个字符串长度不同 return false

两个字符串长度相同:
abc abd 无重复,diff == 1 ca[3] != cb[3] return false
abc abc 无重复,diff == 0 return false
ab ba 无重复,diff == 2 return true
aa aa aa重复,diff == 0 return true
aabc aabc aa重复,diff == 0 return true
aacb aabc aa重复,diff == 2 return true

Java实现:

public boolean buddyStrings(String A, String B) {
if (A.length() != B.length()) return false;
int[] ca = new int[26];
int[] cb = new int[26];
int diff = 0;
for (int i = 0; i < A.length(); i++) {
ca[A.charAt(i) - 'a']++;
cb[B.charAt(i) - 'a']++;
if (A.charAt(i) != B.charAt(i)) diff++;
}
for (int i = 0; i < ca.length; i++) {
if (diff == 0 && ca[i] > 1) return true;
if (ca[i] != cb[i]) return false;
}
return diff == 2;
}

最新文章

  1. iOS 简单的分段下载文件
  2. 繁星——jquery的data()方法
  3. {POJ}{3971}{Scales}{O(N)动态规划}
  4. stl学习(三)crope的用法
  5. 如果动态设置json对象的key
  6. ME21N/ME22N/ME23N屏幕增强BADI ME_GUI_PO_CUST
  7. 移动应用产品开发-android开发项目记录
  8. Oracle FGA审计记录的清理步骤
  9. IE的缓存
  10. linux下使用scp远程传输自动输入密码
  11. sqlserver游标使用和循环
  12. 6.5、Android Studio的Android Device Monitor
  13. 【转】ASP.NET MVC实现权限控制
  14. C#中的虚函数及继承关系
  15. Shell 脚本练习
  16. windows环境 springboot+docker开发环境搭建与hello word
  17. 10-安装es
  18. 10.7-uC/OS-III内部任务(定时器任务 OS_TmrTask())
  19. linux下怎么删除名称带空格的文件
  20. DNS 劫持 和 DNS 污染

热门文章

  1. Altium Designer 设置多层方法及各层介绍
  2. CentOS7 Network Setting
  3. ES 架构及基础 - 1
  4. C++---继承和派生
  5. 各系统升级openssh
  6. 高精度减法(C++实现)
  7. Py点亮
  8. Java语言学习day26--7月01日
  9. 计算机系统5-&gt; 计组与体系结构2 | MIPS指令集(上)| 指令系统
  10. switch 和 if else if else 有什么区别