摘要:每日一題親密字符串鏈接親密字符串題目分析題目本身不是很難,但是有不少需要注意的地方,逐一來進行分析。首先如果兩個字符串不一樣長,那么肯定是。
題目本身不是很難,但是有不少需要注意的地方,逐一來進行分析。首先如果兩個字符串不一樣長,那么肯定是false
。然后考慮長度相等的情況,如果s和goal剛開始就一樣答案是什么呢?如果是類似于ab
,ab
這種類型的,那么也是false
,因為這種交換之后一定就不相等了;如果是aa
和aa
這種,在一些對應位置有相同的元素,那么交換后是true
。在來考慮值不相等的情況,首先從前往后遍歷找到第一個不一樣的位置下標,然后從后往前遍歷找到最后一個不一樣的。假設兩個字符串只有一個位置不一樣,那么答案一定是false
,如果兩個位置不一樣的話,交換這兩個位置的字符,然后根據交換的s和goal值進行判斷即可。
C++
class Solution {public: unordered_map m; bool buddyStrings(string s, string goal) { if(s.size() != goal.size()) return false; int idx1 = -1, idx2 = -1; for(int i=0 ; i=0 ; i--) { if(s[i] != goal[i]) { idx2 = i; break; } } if(idx1 != idx2 and idx1 != -1 and idx2 != -1) { swap(s[idx1], s[idx2]); return s == goal; } if(idx1 == idx2 and idx2 != -1) return false; for(auto ve : m) { if(ve.second > 1) return true; } return false; }};
Java
class Solution { public boolean buddyStrings(String s, String goal) { if (s.length() != goal.length()) { return false; } if (s.equals(goal)) { int[] count = new int[26]; for (int i = 0; i < s.length(); i++) { count[s.charAt(i) - "a"]++; if (count[s.charAt(i) - "a"] > 1) { return true; } } return false; } 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; else if (second == -1) second = i; else return false; } } return (second != -1 && s.charAt(first) == goal.charAt(second) && s.charAt(second) == goal.charAt(first)); } }}作者:LeetCode-Solution
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/124770.html
摘要:解題思路一道并不簡單的模擬題,需要考慮的情況總結下來有三種長度不同返回完全相同且有重復字符返回字符串有不相等的兩個地方需要查看它們交換后是否相等即可。 解題思路:...
摘要:每日一題從英文中重建數字鏈接從英文中重建數字題目分析首先我們先分析每個字母的組成,然后發現一些字符只在一個單詞中出現,我們先去統計一下這些單詞個數。統計完次數,按升序排列即可。 ...
摘要:每日一題檢測大寫字母鏈接檢測大寫字母題目分析模擬分析題遍歷一下字符串統計一下其中的大小寫字母然后根據大小寫字母的數量判斷即可代碼統計大寫小寫字母的數量這里使用是為了避免其他字符的干擾如果字符串都是大寫小寫字母 ...
摘要:題目同構字符串給定兩個字符串和,判斷它們是否是同構的。所有出現的字符都必須用另一個字符替換,同時保留字符的順序。若找到為的則與比較,不相等則不為同構,相等就繼續向下。循環結束后沒有中途即為同構字符串返回。 題目: 同構字符串 給定兩個字符串 s 和 t,判斷它們是否是同構的。 如果 s 中的字符可以被替換得到 t ,那么這兩個字符串是同構的。 所有出現的字符都必須用另一個字符替換,同時保留...
摘要:每日一題叉樹的最大深度鏈接叉樹的最大深度題目分析簡單的搜索題目。只需要從根節點開始一下整個叉樹就可以得到答案了。主要是對要理解和掌握叉樹的遍歷。代碼作者作者 lee...
閱讀 2914·2021-11-24 09:38
閱讀 3524·2021-11-23 09:51
閱讀 996·2021-09-09 11:52
閱讀 4044·2021-08-11 11:18
閱讀 1120·2019-08-30 14:05
閱讀 3238·2019-08-30 11:23
閱讀 1775·2019-08-29 17:02
閱讀 1137·2019-08-26 13:49