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. 从英文中重建数字

解题报告Leecode 859. 亲密字符串——Leecode每日一题系列

亲密字符串之Javascript解法

第859期成为一名函数式码农之二