Re: [閒聊] 每日LeetCode

看板Marginalman作者 (caster)時間2年前 (2022/12/30 00:36), 2年前編輯推噓3(302)
留言5則, 4人參與, 2年前最新討論串164/719 (看更多)
392. Is Subsequence 輸入兩個字串s 與 t,確認是否s是t的子序列。也就是s所有的元素,都出現在t, 且出現的前後順序保持不變。 比如範例輸入的 s = "abc", t = "ahbgdc",abc都在t出現,且a與b與c的出現順序與在s 一樣。 Example 1: Input: s = "abc", t = "ahbgdc" Output: true Input: s = "axc", t = "ahbgdc" Output: false 思路: 這題有兩個問題,第一個是t字串有沒有s[i]的字元,第二個是字元出現的順序。 本來想說strrchr這個函式能快速解決, 結果想不到第二個問題要怎麼處理,哭阿 後來就開兩個迴圈暴力解,一個一個比對,假如有找到就m++, 如果i=m,代表沒找到,就回傳false,反之回傳true。 j++是為了解決順序問題,假如在第5個找到, j++後會從第6個開始找。 C code ------------------ #include <string.h> bool isSubsequence(char * s, char * t){ int m=0; int j=0; for(int i=0; i<strlen(s); i++){ for(; j<strlen(t); j++){ if(s[i] == t[j]){ j++; m++; break; } } if(i == m){ return 0; } } return 1; } ------------------- 補記: 感謝版上大師教我關於迴圈的知識。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.14.32 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1672331765.A.83B.html ※ 編輯: sustainer123 (223.137.14.32 臺灣), 12/30/2022 00:38:03 ※ 編輯: sustainer123 (223.137.14.32 臺灣), 12/30/2022 00:40:24

12/30 00:43, 2年前 , 1F
你好棒
12/30 00:43, 1F

12/30 00:44, 2年前 , 2F
你是研究所等級的碼農大師
12/30 00:44, 2F

12/30 00:47, 2年前 , 3F
你可以學著用early return的方式去寫code
12/30 00:47, 3F

12/30 00:50, 2年前 , 4F
查了一下 這樣可讀性感覺更好 明天試試
12/30 00:50, 4F

12/30 01:12, 2年前 , 5F
倒是也有觀點覺得 Early return 不好,還是看情況啦
12/30 01:12, 5F
文章代碼(AID): #1ZhS7rWx (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1ZhS7rWx (Marginalman)