205. Isomorphic Strings

來源:互聯網
上載者:User

標籤:equal   put   nbsp   info   建立   否則   區別   pre   sub   

一、題目

  1、審題

  

  2、分析

    判斷等長的字串 s 與 t ,其中的字元是否有一一對應的關係。其中 s 中的一個字元只能對應對應 t 中的特定的一個字元。

 

二、解答

  1、思路:

    方法一、

    使用一個 Map , key 為 s 中的字元, value 為 t 中的字元。

    過程如下;

      、判斷 Map 中是否存在 key,

        若不存在,判斷是否存在此 value;

          若存在,則返回 false;

           否則,放入此 key-value。

        若存在,判斷對應的 value 是否和 t 的字元相同,

          若是,則繼續遍曆;

          否則,返回 false;

    public boolean isIsomorphic(String s, String t) {        // 1、替換字元        HashMap<String, String> map = new HashMap<>();        for (int i = 0; i < s.length(); i++) {            String str1 = s.substring(i, i + 1);            String str2 = t.substring(i, i + 1);            if(!map.containsKey(str1)) {                // 2、是否有重複的 value                if(map.values().contains(str2))                        return false;                map.put(str1, str2);            } else if(!(map.get(str1).equals(str2))) {                return false;            }        }                return true;    }

 

  方法二、

    ①、建立兩個整形數組 m1 與 m2,分別存放 s 中字元對應 ASCII 值對應的 s 的下標,和 t 中字元對應 ASCII 值對應的下標,且初值均為 0;

    ②、遍曆 s 與 t 中字元,判斷這兩個字元對應的數組值是否相等,若不相等,則返回 false, 否則賦給當前下標。

    注意: 為了區別下標為 0 的字元,儲存在數組中的下標值從 1 開始

    public boolean isIsomorphic(String s, String t) {       int len = s.length();        int[] m1 = new int[256];        int[] m2 = new int[256];                for (int i = 0; i < len; i++) {            char c1 = s.charAt(i);            char c2 = t.charAt(i);            if(m1[c1] != m2[c2])                return false;            m1[c1] = i + 1;            m2[c2] = i + 1;        }        return true;    }

 

205. Isomorphic Strings

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.