[路飞] 力扣859 亲密字符串

76 阅读1分钟

给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回 true ;否则返回 false 。

交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i != j ,接着交换 s[i] 和 s[j] 处的字符。

例如,在 "abcd" 中交换下标 0 和下标 2 的元素可以生成 "cbad" 。

解法

暴力遍历,注意好不进行重复的交换后不管三七二十一直接交换,判断是否和goal是否相同 时间复杂度肯定是O(n方) 力扣上的用例过不全

var buddyStrings = function(s, goal) {
      if (s.length != goal.length) {
        return false;
    }
    let arrS=s.split("");
    for(let i=0;i<arrS.length-1;i++){
        for(let j=i+1;j<arrS.length;j++){  
            let temp=arrS[i];
            arrS[i]=arrS[j];
            arrS[j]=temp;
            if(arrS.join("")==goal){
                return true;
            }
            else{
            temp=arrS[i];
            arrS[i]=arrS[j];
            arrS[j]=temp;
            }
        }
    }
   
    return false;
};