Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Long Pressed Name ใน C++

สมมติชายคนหนึ่งกำลังพิมพ์ชื่อบนคีย์บอร์ด บางครั้งกดปุ่มนานเกินไปโดยไม่ตั้งใจ จึงอาจพิมพ์ตัวอักษรเพิ่ม 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