859. 亲密字符串
Posted lgz0921
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了859. 亲密字符串相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/buddy-strings/
思路:有以下三种情况:1.判断两个字符串的长度(两个字符串不一样长直接false) 2.当a和b完全一样,判断有没有相同的字符(代码中的map用来标记字符是否出现过,flag用来记录有没有相同的字符) 3.判断有几组不一样的字符(多于两组不一样或者一组不一样就是false,只有两组不一样的时候才有可能是true(记录两组不同字符的位置,判断字符交换后的结果即可,判断方式看代码))。 编码判断这三种情况就可以啦~~~~~
上代码:
class Solution {
fun buddyStrings(a: String, b: String): Boolean {
if (a.length != b.length) {
return false
}
val map = HashMap<Char, Boolean>()
var count = 0;
var flag = false
var x = 0
var y = 0
for (i in a.indices) {
if (a[i] == b[i]) {
if (map[a[i]] != null) {
flag = true
} else {
map[a[i]] = true
}
} else {
count++
when (count) {
1 -> x = i
2 -> y = i
}
}
}
if (count == 2 && a[x] == b[y] && a[y] == b[x] || count == 0 && flag) {
return true
}
return false
}
}
以上是关于859. 亲密字符串的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 859. 亲密字符串(Buddy Strings)
LeetCode 859 亲密字符串[模拟] HERODING的LeetCode之路
LeetCode 384. 打乱数组 / 859. 亲密字符串/ 423. 从英文中重建数字