美文网首页每日打卡
2021-11-23 859 亲密字符串

2021-11-23 859 亲密字符串

作者: 16孙一凡通工 | 来源:发表于2021-11-22 10:10 被阅读0次

思路的话
分两种情况:1.当两个字符串相同时,直接确定单个字符串如s上是否有相同的两个字符,这是由于相同的时候单字符串内两个相同字符即可任意交换。
2.当两个字符串不同时,若超过两个不同字符,直接输出false,寻找不同的两个字符,看是否两字符交换一下相等。

java版本:

class Solution {
    public boolean buddyStrings(String s, String goal) {
        if(s.length()!=goal.length()){
            return false;
        }
        if(s==goal){
            System.out.println("???");
            int[] arr=new int[26];
            char[] s_char=s.toCharArray();
            for(char value:s_char){
                System.out.println(value-'a');
                if(arr[value-'a']==1){
                return true;
                }
                arr[value-'a']=1;
            }
            return false;
        }           
           int location_i=-1,location_j=-1;
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)!=goal.charAt(i)){
                if(location_i==-1){
                    location_i=i;
                }else if (location_j==-1){
                    location_j=i;
                }else{
                    return false;
                }

            }
        }
        return location_j!=-1 && s.charAt(location_i)==goal.charAt(location_j) && s.charAt(location_j)==goal.charAt(location_i);
    }
}

Go版本

import "fmt"
func buddyStrings(s string, goal string) bool {

    if len(s)!=len(goal){
        return false;
    }
    location_i,location_j:=-1,-1
    
if s == goal {
        seen := [26]bool{}
        // 存在重复的地方可以互相交换
        for _, ch := range s {
            if seen[ch-'a'] {
                return true
            }
            seen[ch-'a'] = true
        }
        return false
    }

    for i:=0;i<len(s);i++{
        if(s[i]!=goal[i] ){
            if location_i==-1{
                location_i=i;
            }else if location_j==-1{
                location_j=i;
            }else{
                return false;
            }
           
        }
        
    }
    return location_j!=-1 && s[location_i]==goal[location_j] && s[location_j]==goal[location_i];
}

相关文章

  • 2021-11-23 859 亲密字符串

    思路的话分两种情况:1.当两个字符串相同时,直接确定单个字符串如s上是否有相同的两个字符,这是由于相同的时候单字符...

  • 859. 亲密字符串

    给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回...

  • 859. 亲密字符串

    给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回...

  • 859. 亲密字符串(Python)

    题目 难度:★★☆☆☆类型:字符串 给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两...

  • 教3妹学编程-859. 亲密字符串

    2哥:3妹,别看肥皂剧了,今天我们来做一个算法题。 3妹关掉了电视,高兴的跑过来。3妹:好呀好呀,java的数据结...

  • 859

  • 859

    晚上7:30的时候,我觉得今晚好漫长,不知道该干嘛,可是现在已经快11:30了,我什么都没干,光刷手机虚度了几个小...

  • ⑤-859

    ④[https://www.jianshu.com/p/1ff9b348c43b] 我们常说知行合一,但知行合一里...

  • 859

    2月5日,正月初五,多云,周六 初五接财神爷。我们姐三到栖霞山景区,沾沾财神爷的财气。到了栖霞两个大红绿灯,左拐都...

  • 亲密字符串

    在leetCode上看到亲密字符串,接下来对这个词进一步的了解,从而写下了这篇笔记。 亲密字符串 给定两个由小写字...

网友评论

    本文标题:2021-11-23 859 亲密字符串

    本文链接:https://www.haomeiwen.com/subject/urfwtrtx.html