สมมติว่าเรามี 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