मान लीजिए कि हमारे पास एक स्ट्रिंग s है, और स्ट्रिंग्स A की एक और सरणी है। हमें यह पता लगाना है कि क्या सरणी में एक स्ट्रिंग है जिसमें विभिन्न लंबाई की वर्तमान स्ट्रिंग से एक-वर्ण अंतर है। मान लीजिए कि स्ट्रिंग "केला" की तरह है, और सरणी ["बाना", "नारंगी", "बनबा", "बनपी"] जैसी दिखती है, परिणाम सही होगा, क्योंकि एक स्ट्रिंग बनबा है, यहां केवल एक वर्ण है एक केले से अलग।
इस समस्या को हल करने के लिए, हम कुछ चरणों का पालन करेंगे -
-
दिए गए स्ट्रिंग s के माध्यम से ट्रैवर्स करें, और सरणी में प्रत्येक स्ट्रिंग की जांच करें, फिर arr में प्रत्येक स्ट्रिंग के लिए इन चरणों का पालन करें -
-
जांचें कि क्या गिरफ्तारी में स्ट्रिंग की लंबाई स्ट्रिंग s के साथ समान है
-
यदि लंबाई समान हैं, तो जांचें कि क्या कोई एकल वर्ण बेमेल है या नहीं, यदि हां, तो सही लौटें, अन्यथा गलत।
-
उदाहरण
#include<iostream> #include<vector> using namespace std; bool hasOneCharMismatch(vector<string>arr, string s) { int n = arr.size(); if (n == 0) return false; for (int i = 0; i < n; i++) { if (arr[i].size() != s.size()) continue; bool difference = false; for (int j = 0; j < (int)arr[i].size(); j++) { if (arr[i][j] != s[j]) { if (!difference) difference = true; else { difference = false; break; } } } if (difference) return true; } return false; } int main() { vector<string> arr; arr.push_back("bana"); arr.push_back("orange"); arr.push_back("banaba"); arr.push_back("banapy"); if(hasOneCharMismatch(arr, "banana")){ cout << "One character mismatch found"; } else{ cout << "One character mismatch not found"; } }
आउटपुट -
One character mismatch found