#力扣 LeetCode859. 親密字串 @FDDLC
阿新 • • 發佈:2021-02-11
技術標籤:演算法&資料結構
題目描述:
https://leetcode-cn.com/problems/buddy-strings/
Java程式碼:
class Solution { //len=0,1,2,3 public boolean buddyStrings(String a, String b) { //小寫字母構成 if(a.length()!=b.length())return false; if(Objects.equals(a,b)){ if(a.length()>26)return true; int[] cnt=new int['z'+1]; for(int i=a.length()-1;i>=0;i--)if(++cnt[a.charAt(i)]==2)return true; return false; } int x=0,y=0,cnt=0; for(int i=a.length()-1;i>=0;i--){ if(a.charAt(i)!=b.charAt(i)){ if(++cnt==3)return false; if(cnt==1)x=i; if(cnt==2)y=i; } } if(cnt<2)return false; return a.charAt(x)==b.charAt(y)&&a.charAt(y)==b.charAt(x); } }
Java程式碼二:
class Solution { //len=0,1,2,3 public boolean buddyStrings(String a, String b) { //小寫字母構成 if(a.length()!=b.length())return false; //長度不相等 if(Objects.equals(a,b)){ //a、b相等的情況 if(a.length()>26)return true; int[] cnt=new int['z'+1]; for(int i=a.length()-1;i>=0;i--)if(++cnt[a.charAt(i)]==2)return true; return false; } int[] t=new int[3]; for(int i=a.length()-1;i>=0;i--){ //a、b不相等的情況 if(a.charAt(i)!=b.charAt(i)){ if(++t[0]==3)return false; //t[0]用於計數 t[t[0]]=i; } } return t[0]==2&&a.charAt(t[1])==b.charAt(t[2])&&a.charAt(t[2])==b.charAt(t[1]); } }