समस्या विवरण
शब्दों की एक सूची दी गई है, हमें उन शब्दों को ढूंढना है जिन्हें मानक कीबोर्ड लेआउट की केवल एक पंक्ति के अक्षरों का उपयोग करके टाइप किया जा सकता है।
उदाहरण
यदि इनपुट है: ["hello","world","mom","dad","try","type","tom"], तो आउटपुट होगा ["dad","try","type"]
हल करने का दृष्टिकोण
इस समस्या को हल करने के लिए निम्नलिखित चरणों का पालन करें:
- एक सरणी output परिभाषित करें
- oneRow := true
- charToRowMap नामक एक मैप परिभाषित करें, जो सभी जोड़े {अक्षर, पंक्ति} लेगा, जहां अक्षर कीबोर्ड पर मौजूद अक्षर है, और पंक्ति कीबोर्ड पर पंक्ति संख्या है।
- words सरणी में प्रत्येक शब्द के लिए:
- यदि शब्द खाली नहीं है:
- oneRow := true
- row := charToRowMap[tolower(word[0])]
- i := 1 से आरंभ करें, जब i < शब्द की लंबाई, i को 1 से बढ़ाते हुए:
- यदि charToRowMap[tolower(word[i])] row के बराबर नहीं है:
- oneRow := false
- लूप से बाहर निकलें
- यदि charToRowMap[tolower(word[i])] row के बराबर नहीं है:
- यदि oneRow शून्येतर है:
- शब्द को output के अंत में डालें
- यदि शब्द खाली नहीं है:
- output लौटाएं
C++ कार्यान्वयन
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<string> 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;
}
};
int main() {
Solution ob;
vector<string> v = {"hello","world","mom","dad","try","type","tom"};
print_vector(ob.findWords(v));
return 0;
}
इनपुट
{"hello","world","mom","dad","try","type","tom"}
आउटपुट
[dad, try, type, ]