【哈希】Leetcode 205. 同構字符串【簡單】

同構字符串

  • 給定兩個字符串 s 和 t ,判斷它們是否是同構的。

  • 如果 s 中的字符可以按某種映射關系替換得到 t ,那么這兩個字符串是同構的。

  • 每個出現的字符都應當映射到另一個字符,同時不改變字符的順序。不同字符不能映射到同一個字符上,相同字符只能映射到同一個字符上,字符可以映射到自己本身。

示例 1:

輸入:s = “egg”, t = “add”
輸出:true

解題思路

  • 可以使用兩個哈希表來解決這個問題。遍歷字符串 s 和 t, 分別維護兩個哈希表來記錄字符之間的映射關系。
  • 如果遇到一個新的字符,則將其映射到另一個新的字符上,并將映射關系存儲在哈希表中;
  • 如果遇到已存在的字符,則檢查其映射關系是否與另一個字符串相符,如果不符則返回 false。
  • 如果遍歷完成后未出現問題,則返回 true。

Java實現

public class IsomorphicStrings {public boolean isIsomorphic(String s, String t) {if (s.length() != t.length()) {return false;}Map<Character, Character> sMap = new HashMap<>();Map<Character, Character> tMap = new HashMap<>();for (int i = 0; i < s.length(); i++) {char sCh = s.charAt(i);char tCh = t.charAt(i);//s映射t要一一對應if (!sMap.containsKey(sCh)) {sMap.put(sCh, tCh);} else if (sMap.get(sCh) != tCh) {return false;}//t映射s也要一一對應if (!tMap.containsKey(tCh)) {tMap.put(tCh, sCh);} else if (tMap.get(tCh) != sCh) {return false;}}return true;}public static void main(String[] args) {IsomorphicStrings isomorphicStrings = new IsomorphicStrings();String s1 = "badc", t1 = "baba";System.out.println("Test Case 1:");System.out.println("s: \"egg\", t: \"add\"");System.out.println("Result: " + isomorphicStrings.isIsomorphic(s1, t1)); // Expected: trueString s2 = "foo", t2 = "bar";System.out.println("\nTest Case 2:");System.out.println("s: \"foo\", t: \"bar\"");System.out.println("Result: " + isomorphicStrings.isIsomorphic(s2, t2)); // Expected: falseString s3 = "paper", t3 = "title";System.out.println("\nTest Case 3:");System.out.println("s: \"paper\", t: \"title\"");System.out.println("Result: " + isomorphicStrings.isIsomorphic(s3, t3)); // Expected: true}
}

時間空間復雜度

  • 時間復雜度: 遍歷字符串 s 和 t,時間復雜度為 O(n),其中 n 是字符串的長度。

  • 空間復雜度: 使用了兩個哈希表來存儲映射關系,空間復雜度為O(n),其中 n 是字符串的長度。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13248.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13248.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13248.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何解決 Scrapy 下載圖片時的文件名錯誤問題

在使用 Scrapy 的 ImagesPipeline 下載圖片時&#xff0c;有時會遇到因為文件名的問題導致下載失敗的情況。本文將詳細解釋這種錯誤的原因&#xff0c;并提供一個簡單易懂的解決方案&#xff0c;幫助大家避免類似的問題。 問題描述 在下載圖片時&#xff0c;如果圖片的名字是…

C語言到底怎么學?

C語言到底怎么學&#xff1f; 1、工欲善其事&#xff0c;必先利其器 這里介紹幾個華清遠見學習C語言必備的工具: VMware、ubuntu。 VMware是一家提供虛擬化軟件和解決方案的公司&#xff0c;VMware的旗艦產品是VMware Workstation&#xff0c;這是一種虛擬機軟件&#xff0c;…

echers配置項:數據過多時,折疊數據縮放查看

當數據過多時&#xff0c;如上圖所示的時間點&#xff0c;會自動折疊&#xff0c;此時鼠標縮放還不起作用&#xff0c;我們配置如下代碼 let option {dataZoom: [{startValue: 05:00}, // 這個值需要跟 第一條 時間數據對應上{type: inside}], }配置后&#xff0c;就可以進行…

echers配置項:折線圖,折現的顏色修改

如上圖所示&#xff1a;紅框內的折現顏色修改&#xff0c;并隱藏默認的點 series: [{data: [1, 230, 224, 218, 135, 147, 760,1500,1200,2500,2000],type: line,lineStyle: {color: #00DBFE // 折現顏色},symbol:none, // 不顯示點smooth: true, // 折現角度&#xff1a;圓滑…

hadoop生態圈集群搭建(持續更新240513)

Hadoop生態圈 Linux1.修改ip地址2.重啟network服務3.安裝插件4.關閉防火墻5.創建用戶6.創建目錄7.修改目錄的所屬主和所屬組為lxy8.修改主機名:hadoop102 (注意名字后面不要加空格)9.修改hosts文件10.等插件都裝完后再重啟Linux11.把xshell的登錄用戶換成lxy &#xff08;注意&…

5W 3KVAC隔離 寬電壓輸入 AC/DC 電源模塊——TP05AL系列

TP05AL系列產品是一款經濟型開板式開關電源&#xff0c;輸出功率為5W&#xff0c;具有可靠性高、小體積、性價比高等特點&#xff0c;廣泛用于工控和電力儀器、儀表、智能家居等相關行業。

通過 Apple Vision Pro 釋放創造力:深入研究空間計算

Apple 最新進軍空間計算領域的 Apple Vision Pro,標志著重新定義我們與技術交互方式的重大飛躍。空間計算超越了傳統界限,允許用戶以無縫集成到物理世界的方式參與 2D 和 3D 內容。 我們可以關注兩種類型的體驗: 在空間中渲染 2D 內容。這涉及將現有設備窗口投影到空間領域…

通過C++和libcurl下載網易云音樂音頻文件的5個簡單步驟

概述 在網絡編程中&#xff0c;使用C和libcurl庫下載文件是一項常見的任務。網易云音樂作為中國領先的在線音樂服務平臺之一&#xff0c;以其豐富的音樂資源、優質的音質和智能推薦系統而廣受歡迎。由于其平臺提供了大量的正版音樂資源&#xff0c;用戶在下載音頻文件時可能會…

開源發布:JAVA版低代碼報文網關-通過簡單配置快速對接銀行渠道

大家好&#xff0c;我是隱墨星辰&#xff0c;自從《百圖解碼支付系統設計與實現》專欄中的文章《圖解支付報文網關&#xff1a;一種低代碼報文網關的設計思路與核心代碼實現》發表以來&#xff0c;不少同學留言或私信問我如何實現&#xff0c;說是雖然看懂了思路&#xff0c;但…

pycharm 里面安裝 codeium 插件的時候,不能夠彈出登錄界面

pycharm 里面安裝 codeium 插件的時候&#xff0c;不能夠彈出登錄界面 pycharm 里面安裝 codeium 插件的時候&#xff0c;不能夠彈出登錄界面--解決如下A pycharm 里面安裝 codeium 插件的時候&#xff0c;不能夠彈出登錄界面–解決如下 #踩坑/pycharm/codeium插件無法登錄 安…

微信聯登報invalid code, rid: 66446806-0826d0b4-3a94ce3a ,錯誤碼:40029解決方法

目錄 一、問題描述二、問題原因三、解決方法 一、問題描述 微信登錄報錯&#xff1a; invalid code, rid: 66446806-0826d0b4-3a94ce3a &#xff0c;錯誤碼&#xff1a;40029二、問題原因 后端設置的 appsecret 和 appid 與前端的 appid 不一致。 三、解決方法 檢查是否已…

用Ai編寫一個電機驅動程序

問&#xff1a;幫我寫一個步進電機的控制程序&#xff0c;要有包括加減速&#xff0c;以及電機步中斷處理函數。 答&#xff1a;編寫一個步進電機的控制程序涉及到硬件層面的操作&#xff0c;通常需要依賴特定的硬件平臺和相應的驅動程序。以下是一個簡化的示例&#xff0c;它展…

制氧機負離子的作用與好處深度解析

隨著現代生活節奏的加快&#xff0c;空氣質量逐漸下降&#xff0c;人們對健康生活的追求也日益增強。在這樣的背景下&#xff0c;制氧機負離子功能因其多重健康效益而備受關注。本文將深入探討制氧機負離子的作用與功效&#xff0c;幫助大家更好地了解并應用這一健康科技。 我們…

單片機燒錄程序時“DTR的低電平復位,RTS高電平進入bootloader”有關的串口Modem聯絡信號

燒錄程序時常見DTR和RTS引腳 參考&#xff0c;參考視頻 因為常常使用的都是串口下載程序&#xff0c;常用的芯片CH340系列&#xff0c;下圖中標紅的引腳是MODEM聯絡信號&#xff0c;其中常見的DTR和RTS就是常見的串口Modem網絡輸出信號&#xff0c;也就是通過燒錄軟件控制的接…

VUE v-for中修改data數據

有個需求&#xff0c;要求使用v-for生成序號&#xff0c;但是中間可能會中斷&#xff0c;例如&#xff1a; 1 2 3 4 (此行無序號) 5 6 (此行無序號) (此行無序號) (此行無序號) 7 8 ...... 想著這還不簡單&#xff0c;只要在data中定義一個變量&#xff0c;然后每次調用時就行…

CMMI3認證如何升級為CMMI5認證

眾所周知&#xff0c;CMMI認證體系共分為五個等級&#xff0c;一級最低&#xff0c;五級最高。企業初次申報一般從三級做起&#xff0c;在這個等級水平上&#xff0c;企業在項目研發管理方面已經具備一定的規范程度&#xff0c;對企業的過程改進有著顯著成效&#xff0c;在同行…

wps本地js宏基礎語句

IF語句 //str.indexOf("")的值為-1時表示不包含 function 是否包含關鍵字(){var str "陳表達真是個大帥哥";if(str.indexOf("大") ! -1){alert("是的&#xff0c;他是非常大");} }//str.includes("")返回一個布爾值&#x…

深入解析Wireshark1:從捕獲到分析,一網打盡數據包之旅

目錄 1 認識 Wireshark 1.1 選擇網卡界面 1.2 捕獲數據包界面 1.3 常用按鈕功能介紹 1.4 數據包列表信息 1.5 數據包詳細信息 2 數據包案例分析 Frame: 物理層的數據幀概況 Ethernet II: 數據鏈路層以太網幀頭部信息 Internet Protocol Version 4 (IPv4): 互聯網層IP…

Git系列:git restore 高效恢復代碼的技巧與實踐

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:「stormsha的主頁」…

Java網絡編程:介紹Java提供的網絡編程接口,如Socket,ServerSocket,URL等,并通過實例說明它們的用法。

一、Java網絡編程簡介 網絡編程的重要性: 網絡編程是計算機科學中不可或缺的一部分,它使得兩個或兩個以上的計算機能夠互相通信、協作,達成完成某個任務的目標。網絡編程掃描多數我們日常生活中的應用場景,比如聊天軟件、網頁瀏覽、電子郵件、社交網絡,甚至遠程辦公等。許多…