字元串同構問題——leetcode205/leetcode290
205. Isomorphic Strings
問題描述:
Given two strings s and t, determine if they are isomorphic.
Two strings are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.
For example,
Given "egg"
, "add"
, return true.
Given "foo"
, "bar"
, return false.
Given "paper"
, "title"
, return true.
Note:
You may assume both s and t have the same length.
解析:
這個就是判斷兩個字串是否是同構的,最簡單的思路就是構造字元與字元之間的對映關係。
public boolean isIsomorphic(String s, String t) { if(s==null || s.length()<=1) return true; HashMap<Character,Character> hm=new HashMap<Character,Character>(); for(int i=0;i<s.length();i++){ char ch1=s.charAt(i); char ch2=t.charAt(i); if(hm.containsKey(ch1)){ if(hm.get(ch1)==ch2) continue; else return false; }else{ if(hm.containsValue(ch2)) return false; else hm.put(ch1, ch2); } } return true; }
290. Word Pattern
問題描述:
Given a pattern
and a string str
, find if str
follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in
pattern
and a non-empty word in str
.
Examples:
-
pattern =
"abba"
, str ="dog cat cat dog"
should return true. -
pattern =
"abba"
"dog cat cat fish"
should return false. -
pattern =
"aaaa"
, str ="dog cat cat dog"
should return false. -
pattern =
"abba"
, str ="dog dog dog dog"
should return false.
Notes:
You may assume pattern
contains only lowercase letters, and str
contains lowercase letters separated by a single space.
解析:
這個題目是不是跟上一個很相似,解題思路也是很相似,不過參考了網友的厲害的解題方法,核心程式碼:
//my key
public static boolean wordPattern_My(String pattern, String str) {
if(pattern==null || str==null)
return true;
String[] strs=str.split(" ");
if(pattern.length()!=strs.length)
return false;
HashMap<Character,String> map=new HashMap<Character,String>();
for(int i=0;i<pattern.length();i++){
if(map.containsKey(pattern.charAt(i))){
if(map.get(pattern.charAt(i)).equals(strs[i]))
continue;
else
return false;
}
else{
if(map.containsValue(strs[i]))
return false;
else
map.put(pattern.charAt(i), strs[i]);
}
}
return true;
}
//網友的解析
public static boolean wordPattern(String pattern, String str) {
if(pattern==null || str==null)
return true;
String[] strs=str.split(" ");
if(pattern.length()!=strs.length)
return false;
HashMap<Object,Integer> map=new HashMap<Object,Integer>();
for(int i=0;i<pattern.length();i++){
if(!Objects.equals(map.put(pattern.charAt(i),i),map.put(strs[i],i))){
return false;
}
}
return true;
}
相關推薦
字元串同構問題——leetcode205/leetcode290
205. Isomorphic Strings 問題描述: Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the characters
字元串同構
字元串同構 題目描述: 給定兩個字串 s 和 t ,確定它們是否是同構的。 兩個字串是同構的如果 s 中的字元可以被替換得到 t。 所有出現的字元必須用另一個字元代替,同時保留字串的順序。 沒有兩個字元可以對映到同一個字元,但一個字元可以對映到自己。 注意事項: 你可以假定兩個字串
字元串同構判定
給定兩個字串,請編寫程式,確定其中一個字串的字元重新排列後,能否變成另一個字串。這裡規定大小寫為不同字元,且考慮字串重點空格。 給定一個string stringA和一個string stringB,請返回一個bool,代表兩串是否重新排列後可相同。保證兩串的長度都小於等於5000。 測試樣例: "This
字元串同構的最小表示方法
參考自 http://blog.csdn.net/zy691357966/article/details/39854359 最近做題碰到了字元串同構的題,就百度看了一下字元串同構的最小表示法
Leetcode 字元串同構
今天用C#刷Leetcode,遇到字元串同構的題目,在網上看到兩種解法,第一種涉及到了c#中字典泛型,第二種用到了StringBuilder類,當在迴圈中將字串連在一起時,可以提升效能,各具特色,故分享之。 Question:Two words are called i
hihocoder 後綴自動機五·重復旋律8 求循環同構串出現的次數
變換 iostream hihocode 復雜 img 進行 ron default data- 描述 小Hi平時的一大興趣愛好就是演奏鋼琴。我們知道一段音樂旋律可以被表示為一段數構成的數列。 小Hi發現旋律可以循環,每次把一段旋律裏面最前面一個音換到最後面就成為了
【leetcode 簡單】 第五十九題 同構字符串
另一個 tco 保留 {} 簡單 urn code 映射 for 給定兩個字符串 s 和 t,判斷它們是否是同構的。 如果 s 中的字符可以被替換得到 t ,那麽這兩個字符串是同構的。 所有出現的字符都必須用另一個字符替換,同時保留字符的順序。兩個字符不能映射到同一個字符
LeetCode--205--同構字符串
list() 不能 racket false -- 兩個 span nbsp bracket 問題描述: 給定兩個字符串 s 和 t,判斷它們是否是同構的。 如果 s 中的字符可以被替換得到 t ,那麽這兩個字符串是同構的。 所有出現的字符都必須用另一個字符替換,同時保留字
leetcode205:同構字串
思想: 定義一個空字典reserve,先判斷s[i]是否再字典鍵中,若不在則繼續判斷t[i]是否在字典值中,若不在則賦值,若在則返回False。若在則判斷值是否相等,相等則繼續,反之則返回False。 class Solution: def isIsomorphic(self, s,
LeetCode205 同構字串
題目 給定兩個字串 s 和 t,判斷它們是否是同構的。 如果 s 中的字元可以被替換得到 t ,那麼這兩個字串是同構的。 所有出現的字元都必須用另一個字元替換,同時保留字元的順序。兩個字元不能對映到同一個字元上,但字元可以對映自己本身 示例 示例 1: 輸入:
【程式設計師面試經典】確定兩串亂序同構。
程式設計師面試經典 題目要求 給定兩個字串,請編寫程式,確定其中一個字串的字元重新排列後,能否變成另一個字串。這裡規定大小寫為不同字元,且考慮字串中的空格。 給定一個string stringA和一個string stringB,請返回一個bool,代表兩串是否重新排列後可相同。
讓這三個月來的更猛烈些吧,前端react同構項目
aso ssr seo ava git blog 發展 客戶端請求 功能 昨天一篇文章講述了我在這三個月中由.net到java的過程,其中踩坑填坑的細節真不是三言兩語可以道盡,而完成時的喜悅也遠非尋常可比(僅次於漲工資)。然而到這並不算完結,作為前後端分離的忠實粉絲,我認
【BZOJ3162】獨釣寒江雪 樹同構+DP
eight pri 相同 題解 con oid src str mil 【BZOJ3162】獨釣寒江雪 題解:先進行樹hash,方法是找重心,如果重心有兩個,則新建一個虛點將兩個重心連起來,新點即為新樹的重心。將重心當做根進行hash,hash函數不能太簡單,
React前後端如何同構,防止重復渲染
linux首先解釋React前後端同構、React首屏渲染的概念。然後通過這2個概念解決服務端渲染完成後瀏覽器端重復渲染的問題。什麽叫前後端同構?為了解決某些問題(比如SEO、提升渲染速度等)react 提供了2個方法在服務端生成一個HTML文本格式的字符串。在得到了這個HTML格式的字符串之後,通常會將其組
同構數(“同構數”是指這樣一種數,這個數右端的數平方後會得到這個數本身)
nbsp amp 所有 div 輸入數據 for 輸入 概念 pre 一、題目: “同構數”是指這樣一種數,這個數右端的數平方後會得到這個數本身。例如,5是25 右邊的數,25是625右邊的數,25和625都是同構數。找出a ~ b之間全部同構數。 Input 有多組數
刷題總結——樹的同構(bzoj4337 樹上hash)
inline rime sin com amp const 註意 turn input Description 樹是一種很常見的數據結構。 我們把N個點,N-1條邊的連通無向圖稱為樹。 若將某個點作為根,從根開始遍歷,則其它的點都有一個前驅,這個樹就成為有根樹。 對於兩個樹
POJ1635 Subway tree systems ——(判斷樹的同構,樹的最小表示法)
systems scan color end cto 同構 while scanf urn 給兩棵有根樹,判斷是否同構。因為同構的樹的最小表示法唯一,那麽用最小表示法表示這兩棵樹,即可判斷同構。順便如果是無根樹的話可以通過選出重心以後套用之前的方法。 AC代碼如下:
7-10 樹的同構(25 分)
lib tps ring pan ges 輸出 ble ram 技術 給定兩棵樹T1和T2。如果T1可以通過若幹次左右孩子互換就變成T2,則我們稱兩棵樹是“同構”的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點A、B、G的左右孩
PTA 樹的同構(25 分)
其中 content turn 不同 是否 std itl ng- class 7-1 樹的同構(25 分) 給定兩棵樹T1和T2。如果T1可以通過若幹次左右孩子互換就變成T2,則我們稱兩棵樹是“同構”的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點A、
直播|百安居前端架構師陳國興:如何使用React構建同構(isomorphic)應用
移動開發 java app開發 隨著前端的發展,為了用戶體驗,H5越來越多的使用SPA架構,導致JS代碼越來越多,體積也變的龐大,這時傳統的ajax方式在首屏訪問時就變得慢了,而且ajax在seo方面有天然的弱勢,這時服務端渲染又回來了。我們使用React搭配React Router等類庫來實現服