Re: [閒聊] 每日LeetCode
205. Isomorphic Strings
給兩個字串s跟t,判斷他們是否是同構字。
如果他們是同構字,表示s裡面毎個字元都可以拿來對應t的特定字元。
全部的字元都要依順序被取代,而且s一種字元只會對應t一種字元,也可能對應到與自己
相同的字元。
Example 1:
Input: s = "egg", t = "add"
Output: true
Input: s = "foo", t = "bar"
Output: false
Input: s = "paper", t = "title"
Output: true
思路:
這題主要用map的概念,就我理解,map是指輸入一個值就會跑出對應的值
,兩個值必為一對一對應關係。所以我們先設定兩個空陣列,
之後把s[i]放入array的指引,之後使array1[s[i]]=t[i]且array2[t[i]]=s[i]
假設後面array1[s[i]]!=t[i]則回傳false,反之則繼續執行迴圈。
假若迴圈執行完畢,array1[s[i]] == t[i],則回傳true。
C Code
------------------
#include <string.h>
bool isIsomorphic(char * s, char * t){
int array1[256]={0};
int array2[256]={0};
for(int i=0;i<strlen(s);i++){
if(array1[s[i]]==0){
if(array2[t[i]]==0){
array1[s[i]]=t[i];
array2[t[i]]=s[i];
}else{
return false;
}
}else{
if(array1[s[i]]!=t[i]){
return false;
}
}
}
return true;
}
------------------
補記:
學到map的觀念,不過演算法教學沒幾個用C,找了好久才找到。
然後解答沒幾個用C,一堆C++跟C#混在裡面==
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.119.103 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1672198670.A.830.html
推
12/28 11:41,
2年前
, 1F
12/28 11:41, 1F
※ 編輯: sustainer123 (223.137.14.32 臺灣), 12/28/2022 11:42:06
→
12/28 11:44,
2年前
, 2F
12/28 11:44, 2F
→
12/28 11:46,
2年前
, 3F
12/28 11:46, 3F
討論串 (同標題文章)
完整討論串 (本文為第 157 之 719 篇):