Re: [閒聊] 每日LeetCode
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
12/30 00:47, 3F
→
12/30 00:50,
2年前
, 4F
12/30 00:50, 4F
推
12/30 01:12,
2年前
, 5F
12/30 01:12, 5F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 164 之 719 篇):