摘要:排序法復雜度時間空間思路因為變形詞兩個單詞對應字母出現的次數都相同,所以如果將兩個單詞按字母順序排序,肯定會變為一個字符串,如果字符串不相同,則不是變形詞。
Valid Anagram
排序法 復雜度Given two strings s and t, write a function to determine if t is an anagram of s.
For example, s = "anagram", t = "nagaram", return true. s = "rat", t = "car", return false.
Note: You may assume the string contains only lowercase alphabets.
時間 O(KlogK) 空間 O(K)
思路因為變形詞兩個單詞對應字母出現的次數都相同,所以如果將兩個單詞按字母順序排序,肯定會變為一個字符串,如果字符串不相同,則不是變形詞。這里不推薦Java用這個方法,因為Java得先將字母轉化為char數組再排序。
代碼public class Solution { public boolean isAnagram(String s, String t) { char[] word1 = s.toCharArray(); char[] word2 = t.toCharArray(); Arrays.sort(word1); Arrays.sort(word2); return String.valueOf(word1).equals(String.valueOf(word2)); } }哈希表法 復雜度
時間 O(K) 空間 O(1)
思路變形詞的本質是兩個單詞中,每個字母出現的次數相同,所以我們可以用一個哈希表,記錄第一個單詞中每個字母的個數,再遍歷第二個單詞,減去相應的字母出現次數,如果某個字母的計數器不為0了,則說明某個字母出現的次數不一樣。這里只用了一個大小為26的數組,是假設只會出現英文字母。
代碼public class Solution { public boolean isAnagram(String s, String t) { int[] table = new int[26]; // 記錄字母在第一個單詞中出現的次數 for(int i = 0; i < s.length(); i++){ table[s.charAt(i)-"a"]++; } // 減去字母在第二個單詞中出現的次數 for(int i = 0; i < t.length(); i++){ table[t.charAt(i)-"a"]--; } // 如果某個計數器不為0,則返回假 for(int i = 0; i < 26; i++){ if(table[i]!=0) return false; } return true; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64609.html
摘要:統計字母頻率復雜度時間空間思路用一個位的數組統計字符串中每一個字符出現的次數,然后同理,維護一個長度為長度的窗口,來統計這個窗口里母串各個字符出現的次數,計入一個數組中。比較這兩個數組是否相同就知道是否是變形詞子串了。 Anagram Substring Search Given a text txt[0..n-1] and a pattern pat[0..m-1], write ...
摘要:題目鏈接題目分析判斷給定的兩個單詞是否同構。即,重新排列組合所出現的字母后得到另一個單詞。思路拆分成數組后,排序,再拼起來。最終代碼若覺得本文章對你有用,歡迎用愛發電資助。 D85 242. Valid Anagram 題目鏈接 242. Valid Anagram 題目分析 判斷給定的兩個單詞是否同構。即,重新排列組合所出現的字母后得到另一個單詞。 思路 拆分成數組后,排序,再拼起來...
摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經到題,所以后面會調整自己,在刷算法與數據結構的同時,攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區別...
摘要:建立一個長度為的數組,統計所有個字符在出現的次數,然后減去這些字符在中出現的次數。否則,循環結束,說明所有字符在和中出現的次數一致,返回。 Program Write a method anagram(s,t) to decide if two strings are anagrams or not. Example Given s=abcd, t=dcab, return true....
摘要:我們將每個詞排序后,根據這個鍵值,找到哈希表中相應的列表,并添加進去。 Group Anagrams 最新更新請見:https://yanjia.me/zh/2019/01/... Given an array of strings, group anagrams together. For example, given: [eat, tea, tan, ate, nat, bat...
閱讀 3491·2023-04-25 21:43
閱讀 3104·2019-08-29 17:04
閱讀 805·2019-08-29 16:32
閱讀 1544·2019-08-29 15:16
閱讀 2155·2019-08-29 14:09
閱讀 2744·2019-08-29 13:07
閱讀 1632·2019-08-26 13:32
閱讀 1326·2019-08-26 12:00