设两个字符串分别为 s 和 goal,其中 s[i] 表示 s 的第 i 个字符,其中 goal[i] 表示 goal 的第 i 个字符。
如果 s[i]=goal[i],我们就说 i 是匹配的,否则称 i 是不匹配的。
亲密字符串定义为:需要交换 s 中的第 i 个字符 s[i] 与 s 中第 j 个字符且满足i =j,交换后 s 与 goal 相等。
亲密字符串的两个字符串需要交换一次索引不相等的两个字符后相等。
代码:
publicclassSolution{publicboolBuddyStrings(string s,string goal){if(s.Length != goal.Length){returnfalse;}if(s.Equals(goal)){int[] count =newint[26];for(int i =0; i < s.Length; i++){
count[s[i]-'a']++;if(count[s[i]-'a']>1){returntrue;}}returnfalse;}else{int first =-1, second =-1;for(int i =0; i < goal.Length; i++){if(s[i]!= goal[i]){if(first ==-1)
first = i;elseif(second ==-1)
second = i;elsereturnfalse;}}return(second !=-1&& s[first]== goal[second]&& s[second]== goal[first]);}}}
设两个字符串分别为 s 和 goal,其中 s[i] 表示 s 的第 i 个字符,其中 goal[i] 表示 goal 的第 i 个字符。
如果 s[i]=goal[i],我们就说 i 是匹配的,否则称 i 是不匹配的。
亲密字符串定义为:需要交换 s 中的第 i 个字符 s[i] 与 s 中第 j 个字符且满足i =j,交换后 s 与 goal 相等。
亲密字符串的两个字符串需要交换一次索引不相等的两个字符后相等。
代码:
classSolution{publicbooleanbuddyStrings(String s,String goal){if(s.length()!= goal.length()){returnfalse;}if(s.equals(goal)){int[] count =newint[26];for(int i =0; i < s.length(); i++){
count[s.charAt(i)-'a']++;if(count[s.charAt(i)-'a']>1){returntrue;}}returnfalse;}else{int first =-1, second =-1;for(int i =0; i < goal.length(); i++){if(s.charAt(i)!= goal.charAt(i)){if(first ==-1)
first = i;elseif(second ==-1)
second = i;elsereturnfalse;}}return(second !=-1&& s.charAt(first)== goal.charAt(second)&&
s.charAt(second)== goal.charAt(first));}}}