1. 程式人生 > 其它 >LeetCode205——同構字串

LeetCode205——同構字串

技術標籤:javaLeetCodejavaleetcode

1、使用HashMap

	public static boolean isIsomorphic(String s, String t) {
		if(s.length() != t.length()) return false;
		//泛型必須是類型別,而不能是基本型別(包括基本型別的陣列)
		HashMap<Character, Character> s_map = new HashMap<Character, Character>();
		HashMap<Character, Character>
t_map = new HashMap<Character, Character>(); int len = s.length(); for(int i=0; i<len; i++) { char x=s.charAt(i), y=t.charAt(i); if((s_map.containsKey(x) && s_map.get(x) != y) || (t_map.containsKey(y) && t_map.get(y) != x)) { return false; } s_map.put(x, y)
; t_map.put(y,x); } return true; }

2、使用陣列
在這裡插入圖片描述

	public static boolean isIsomorphic(String s, String t) {
		//ASCII碼的範圍為0~127
		int sm[] = new int[128];
        int tm[] = new int[128];
        char sc[] = s.toCharArray();
        char tc[] = t.toCharArray();
       
        for(int i=0; i<s.length
(); i++){ if(sm[sc[i]] != tm[tc[i]]) return false; sm[sc[i]] = tm[tc[i]] = i+1; } return true; }

在這裡插入圖片描述
用陣列之後,時間快了很多,但是據我看他們的時間複雜度都是O(n),望高手指點!