【JS】親密字串 #字串
阿新 • • 發佈:2018-11-30
給定兩個由小寫字母構成的字串 A 和 B ,只要我們可以通過交換 A 中的兩個字母得到與 B 相等的結果,就返回 true ;否則返回 false 。
輸入: A = “ab”, B = “ba” , 輸出: true
輸入: A = “ab”, B = “ab” , 輸出: false
輸入: A = “aa”, B = “aa” , 輸出: true
輸入: A = “aaaaaaabc”, B = “aaaaaaacb” , 輸出: true
輸入: A = “”, B = “aa” , 輸出: false
提示:
0 <= A.length <= 20000
0 <= B.length <= 20000
A 和 B 僅由小寫字母構成。
解法一:
字串 A 的兩個不同的字元交換位置,再返回字串 A , B 是否相同。
可能要考慮2個字串完全相同的情況,比如 :
A=‘ab’ ,B=‘ab’ ; 互換不會相同,A=‘aab’ ,B=‘aab’ 互換字元 'aa’就是相同的
var buddyStrings = function(A, B) { if(A.length<1 || B.length<1) return false; var str='' ,p ,A=A.split("") ,arr={},same=0 for(var i=0;i<A.length;i++){ if(arr[A[i]]){ same=1 }else{ arr[A[i]]=1 } if(A[i]!=B[i]){ if(str!=''){ A[p]=A[i] A[i]=str; break; } str=A[i] p=i } } // console.log(A.join(""),B,p,arr) return A.join("")==B && ( same==1 || p>=0 ) ? true: false; }
執行用時:76 ms
已經戰勝 84.77 % 的 javascript 提交記錄