কম্পিউটার

C++ এ কীবোর্ড সারি


শব্দগুলির একটি তালিকা দেওয়া হলে, আমাদের সেই শব্দগুলি খুঁজে বের করতে হবে যেগুলি স্ট্যান্ডার্ড কীবোর্ড লেআউটের শুধুমাত্র একটি সারিতে বর্ণমালার অক্ষর ব্যবহার করে টাইপ করা যায়৷

সুতরাং, যদি ইনপুট হয় ["হ্যালো","ওয়ার্ল্ড","মা","বাবা","ট্রাই","টাইপ","টম"], তাহলে আউটপুট হবে ["বাবা","ট্রাই" ,"type"]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি অ্যারে আউটপুট সংজ্ঞায়িত করুন

  • oneRow :=সত্য

  • একটি মানচিত্র charToRowMap সংজ্ঞায়িত করুন, এটি সমস্ত জোড়া লাগবে যেমন {letter,line}, অক্ষরটি কীবোর্ডে উপস্থিত অক্ষর এবং লাইনটি কীবোর্ডের লাইন নম্বর।

  • শব্দ বিন্যাসে প্রতিটি শব্দের জন্য −

    • যদি শব্দটি খালি না হয়, তাহলে −

      • oneRow :=সত্য

      • সারি :=charToRowMap[tolower(word[0])

      • আরম্ভ করার জন্য i :=1, যখন i <শব্দের আকার, আপডেট (i 1 দ্বারা বৃদ্ধি), −

        • যদি charToRowMap[tolower(word[i]) সারির সমান না হয়, তাহলে −

          • oneRow :=মিথ্যা

          • লুপ থেকে বেরিয়ে আসুন

      • যদি oneRow অ-শূন্য হয়, তাহলে −

        • আউটপুট শেষে শব্দ সন্নিবেশ করান

  • রিটার্ন আউটপুট

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#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, ]

  1. C++ এ ট্রিতে এক সারি যোগ করুন

  2. C++ এ সুডোকু সলভার

  3. C++ এ প্রতিটি গাছের সারিতে সবচেয়ে বড় মান খুঁজুন

  4. C++ এ শনাক্তকারী