在分子生物學中,DNA 是由四種鹼基所組成:
A(Adenine)、C(Cytosine)、G(Guanine)、T(Thymine)。
其中,A 與 T 互相配對,而 C 與 G 則彼此對應。
如果將一段 DNA 序列反轉後,再把每個鹼基依照其對應規則替換,就能得到所謂的 「反向互補序列」(Reverse Complement)。
這個概念被廣泛應用於序列比對、生物資訊分析與基因搜尋等領域。
現在,給你兩段由 DNA 鹼基組成的字串:
第一段字串 S(較長)
第二段字串 T(較短)
你的任務是:
請你先將字串 T 轉換成它的反向互補序列,接著檢查這段新序列是否能在 S 中找到匹配的位置。
輸入共兩行:
第 1 行:字串 S(1 ≤ S ≤ 10⁵)
第 2 行:字串 T(1 ≤ T< S)
字串預期只包含大寫英文字母 A、C、G、T。
若包含其他字元,輸出-1。
若找到至少一個匹配位置,請輸出所有位置(1-based),以空白分隔。
若沒有找到,或輸入不合法,請輸出:-1
ACGTACGTAC GT
1 5 9
本題需要先將第二個字串 T 轉換為它的「反向互補序列」:
先反轉整個字串
再將每個字元依照下列規則替換:
A ↔ T
C ↔ G
完成反向互補後,請比對此新字串是否出現在第一個字串 S 中。
請注意,本題要求輸出 所有匹配的起始位置(1-based index)。
若任一輸入字串包含非 A、C、G、T 的字元,則輸出 -1。
若反向互補後的字串未在 S 中出現,也輸出 -1。
| ID | User | Problem | Subject | Hit | Post Date |
沒有發現任何「解題報告」 |
|||||