สมมติชายคนหนึ่งกำลังพิมพ์ชื่อบนคีย์บอร์ด บางครั้งกดปุ่มนานเกินไปโดยไม่ตั้งใจ จึงอาจพิมพ์ตัวอักษรเพิ่ม 1 ตัวขึ้นไป เราจะรับสตริง 2 ตัว และตรวจสอบว่าสตริงที่สองเป็น long-pressed name หรือไม่ เช่น ถ้าชื่อคือ "Amit" และสตริงที่สองคือ "Ammittt" คือ longpressed name แต่ "Ammttt" ไม่ใช่ เพราะตัวอักษร i ไม่มี
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:
- ให้ j := 0
- for i := 0, i < second.size, เพิ่ม i ทีละ 1:
- ถ้า j < actual_name.size และ actual_name[j] = second[i] แล้ว เพิ่ม j ขึ้น 1
- return true เมื่อ j = actual_name.size มิฉะนั้น false
โปรแกรมตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool isLongPressedName(string name, string typed) {
int j = 0;
for (int i = 0; i < typed.size(); i++) {
if (j < name.size() && name[j] == typed[i]) j++;
}
return j == name.size();
}
};
main() {
Solution ob;
string res = ob.isLongPressedName("Amit", "Ammittt") ? "true" : "false";
cout << res;
}
Input
"Amit" "Ammittt"
Output
true