機器學習實戰——kNN近鄰演算法
阿新 • • 發佈:2021-11-26
集合
import java.util.HashMap; class Solution { public boolean isAnagram(String s, String t) { if (s.length() != t.length()){ return false; } /** * 用HashMap儲存s中字母及次數 * 然後遍歷t,找到相同的就減1,一旦次數小於0說明該字母的個數不相等 * map.getOrDefault()方法可以一步判斷元素是否存在以及賦值 */ HashMap<Character, Integer> map = new HashMap<>(); for (int i = 0; i < s.length(); i++) { map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0) + 1); } for (int i = 0; i < t.length(); i++) { map.put(t.charAt(i), map.getOrDefault(t.charAt(i), 0) - 1); if (map.get(t.charAt(i)) < 0){ return false; } } return true; } } /** * 時間複雜度 O(n) * 空間複雜度 O(n) */
雜湊表
class Solution { public boolean isAnagram(String s, String t) { if (s.length() != t.length()){ return false; } /** * 用雜湊表儲存s中所有小寫字母的次數 * 然後在t中進行尋找,只要有哪個字母的次數小於0則返回false */ int[] hash = new int[128]; for (int i = 0; i < s.length(); i++) { hash[s.charAt(i) - 'a']++; } for (int i = 0; i < t.length(); i++) { hash[t.charAt(i) - 'a']--; if (hash[t.charAt(i) - 'a'] < 0){ return false; } } return true; } } /** * 時間複雜度 O(n) * 空間複雜度 O(1) */