2021-11-23 859 亲密字符串

思路的话
分两种情况: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

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

你可能感兴趣的:(2021-11-23 859 亲密字符串)