สมมติว่าเรามี S และ T สองสาย เราต้องตรวจสอบว่า S อยู่หลัง T หรือไม่
ดังนั้น หากอินพุตเป็น S ="abc", T ="adbrcyxd" ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ถ้า s เหมือนกับ t แล้ว −
-
คืนความจริง
-
-
n :=ขนาดของ s, m :=ขนาดของ t
-
เจ :=0
-
สำหรับการเริ่มต้น i :=0 เมื่อ i
-
ถ้า t[j] เหมือนกับ s[i] แล้ว −
-
(เพิ่มขึ้น j โดย 1)
-
-
ถ้า j เท่ากับขนาดของ t แล้ว −
-
คืนความจริง
-
-
-
คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; class Solution { public: bool solve(string t, string s) { if(s == t) return true; int n = s.size(); int m = t.size(); int j = 0; for(int i = 0; i < n; i++){ if(t[j] == s[i]) j++; if(j == t.size()) return true; } return false; } }; main(){ Solution ob; string S = "abc", T = "adbrcyxd"; cout << ob.solve(S, T); }
อินพุต
"abc", "adbrcyxd"
ผลลัพธ์
1