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

Keyboard Row ใน C++

แนวคิด

ได้รับรายการคำ ให้หาคำที่พิมพ์ได้โดยใช้ตัวอักษรบนแถวเดียวของคีย์บอร์ดมาตรฐาน

เช่น ถ้าอินพุตคือ ["hello","world","mom","dad","try","type","tom"] ผลลัพธ์คือ ["dad","try","type"]

วิธีแก้:

  • กำหนดอาร์เรย์ output
  • oneRow := true
  • กำหนด map charToRowMap เก็บคู่ {ตัวอักษร, แถว} ตัวอักษรบนคีย์บอร์ดและหมายเลขแถว
  • สำหรับแต่ละคำใน words array:
    • ถ้าคำไม่ว่าง: oneRow := true, row := charToRowMap[tolower(word[0])], วนลูป i := 1 ถึงความยาว word - 1: ถ้า charToRowMap[tolower(word[i])] ไม่เท่ากับ row: oneRow := false, ออกจากลูป
    • ถ้า oneRow ไม่เป็นศูนย์: แทรกคำลงท้าย output
  • คืนค่า output

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v) {
    cout << "[";
    for(int i = 0; i<v.size(); i++) {
        cout << v[i] << ", ";
    }
    cout << "]"<<endl;
}
class Solution {
public:
    vector<string> findWords(vector<string>& words) {
        vector<string> output;
        bool oneRow = true;
        unordered_map<char, int> charToRowMap{
            {'q', 1}, {'w', 1}, {'e', 1}, {'r', 1}, {'t', 1}, {'y', 1}, {'u', 1}, {'i', 1}, {'o', 1}, {'p', 1},
            {'a', 2}, {'s', 2}, {'d', 2}, {'f', 2}, {'g', 2}, {'h', 2}, {'j', 2}, {'k', 2}, {'l', 2},
            {'z', 3}, {'x', 3}, {'c', 3}, {'v', 3}, {'b', 3}, {'n', 3}, {'m', 3}
        };
        for (auto word : words)
            if (!word.empty()) {
                oneRow = true;
                int row = charToRowMap[tolower(word[0])];
                for (int i = 1; i < word.length(); i++)
                    if (charToRowMap[tolower(word[i])] != row) {
                        oneRow = false;
                        break;
                    }
                if (oneRow) output.push_back(word);
            }
        return output;
    }
};
main() {
    Solution ob;
    vector<string> v = {"hello","world","mom","dad","try","type","tom"};
    print_vector(ob.findWords(v));
}

อินพุต

{"hello","world","mom","dad","try","type","tom"}

เอาต์พุต

[dad, try, type, ]