当前位置:首页 » 《随便一记》 » 正文

leetcode每日一题-859:亲密字符串_苦泉的博客

27 人参与  2022年05月08日 13:08  分类 : 《随便一记》  评论

点击全文阅读


leetcode每日一题-859:亲密字符串

链接

亲密字符串


题目

在这里插入图片描述



分析

题目本身不是很难,但是有不少需要注意的地方,逐一来进行分析。首先如果两个字符串不一样长,那么肯定是false。然后考虑长度相等的情况,如果s和goal刚开始就一样答案是什么呢?如果是类似于abab这种类型的,那么也是false,因为这种交换之后一定就不相等了;如果是aaaa这种,在一些对应位置有相同的元素,那么交换后是true。在来考虑值不相等的情况,首先从前往后遍历找到第一个不一样的位置下标,然后从后往前遍历找到最后一个不一样的。假设两个字符串只有一个位置不一样,那么答案一定是false,如果两个位置不一样的话,交换这两个位置的字符,然后根据交换的s和goal值进行判断即可。



代码

C++

class Solution {
public:

    unordered_map<char, int> m;

    bool buddyStrings(string s, string goal) {
        if(s.size() != goal.size()) return false;
        int idx1 = -1, idx2 = -1;

        for(int i=0 ; i<s.size() ; i++)
        {
            if(s[i] == goal[i])
                m[s[i]] += 1;
        }

        for(int i=0 ; i<s.size() ; i++)
        {
            if(s[i] != goal[i])
            {
                idx1 = i;
                break;
            }
        }

        for(int i=s.size()-1 ; i>=0 ; i--)
        {
            if(s[i] != goal[i])
            {
                idx2 = i;
                break;
            }
        }

        if(idx1 != idx2 and idx1 != -1 and idx2 != -1)
        {
            swap(s[idx1], s[idx2]);
            return s == goal;
        } 

        if(idx1 == idx2 and idx2 != -1) return false;

        for(auto ve : m)
        {
            if(ve.second > 1) return true;
        }

        return false;
    }
};

Java

class Solution {
    public boolean buddyStrings(String s, String goal) {
        if (s.length() != goal.length()) {
            return false;
        }
        
        if (s.equals(goal)) {
            int[] count = new int[26];
            for (int i = 0; i < s.length(); i++) {
                count[s.charAt(i) - 'a']++;
                if (count[s.charAt(i) - 'a'] > 1) {
                    return true;
                }
            }
            return false;
        } else {
            int first = -1, second = -1;
            for (int i = 0; i < goal.length(); i++) {
                if (s.charAt(i) != goal.charAt(i)) {
                    if (first == -1)
                        first = i;
                    else if (second == -1)
                        second = i;
                    else
                        return false;
                }
            }

            return (second != -1 && s.charAt(first) == goal.charAt(second) &&
                    s.charAt(second) == goal.charAt(first));
        }
    }
}

作者:LeetCode-Solution

点击全文阅读


本文链接:http://zhangshiyu.com/post/39732.html

字符串  位置  交换  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 家宴过后,我捉奸了庶妹和我老公无广告_庶妹老公侍卫TOP10_小说后续在线阅读_无删减免费完结_
  • 寝室六个人,她们背着我建五人群必读文_太天真申请书冷笑最新阅读_小说后续在线阅读_无删减免费完结_
  • 开局获得狐仙传承结局+番外_江帆赵雪隐藏剧情_小说后续在线阅读_无删减免费完结_
  • 刀锈春根生,白骨犹温完结全文_卫舟棠棠知意一口气完结_小说后续在线阅读_无删减免费完结_
  • 夫君立筷子定我灾星罪名,我改嫁冷宫皇子后他追悔莫及好评_赵荀孟如安青瑶精心编著_小说后续在线阅读_无删减免费完结_
  • 邻居低素质,而我没素质独家番外_老太太赖皮欣欣超长版_小说后续在线阅读_无删减免费完结_
  • 重生后我转嫁首富瘸腿独子,总裁前夫却疯了一口气看完_妹妹傅云琛沈明辉独家番外_小说后续在线阅读_无删减免费完结_
  • 我拒绝给系花捐款后,全系同学悔疯了在线阅读_小说后续在线阅读_无删减免费完结_
  • 我让位给女友的透视眼竹马,他却说如果能重生再也不来了。虐心反转_玉石林若女友推荐_小说后续在线阅读_无删减免费完结_
  • 相国独子的丫鬟砸坏我的玉佩后,我当场拒婚阅读_玉佩陈郡谢氏全新_小说后续在线阅读_无删减免费完结_
  • 手术时,我看着病人惨死最新试读_淼淼陆知衍姜颜全本完结_小说后续在线阅读_无删减免费完结_
  • 男友霸道给我开黑卡,转头却骂我是捞女最新章节_肖年顾客黑卡热文_小说后续在线阅读_无删减免费完结_

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1