एक स्ट्रिंग 'ए' और एक वर्ण 'चार' को देखते हुए, कार्य दिए गए स्ट्रिंग के प्रत्येक वर्ण से 'चार' की दूरी को प्रिंट करना है। दूरी सरणी का आकार स्ट्रिंग के आकार के समान होता है, क्योंकि हमें दिए गए स्ट्रिंग के प्रत्येक वर्ण से वर्ण की दूरी ज्ञात करनी होती है।
उदाहरण के लिए
इनपुट-1:
a = “tutorialspoint”
char = “o”
आउटपुट:
[ 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3]
स्पष्टीकरण: दी गई स्ट्रिंग में, दिए गए स्ट्रिंग के प्रत्येक वर्ण से वर्ण की दूरी [3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3] है।पी>
इनपुट-2:
a = “programmer”char = “r”
आउटपुट:
[1, 0, 1, 2, 0, 1, 2, 3, 4, 0 ]
स्पष्टीकरण: दी गई स्ट्रिंग में, दिए गए स्ट्रिंग के प्रत्येक वर्ण से 'r' की दूरी [1, 0, 1, 2, 0, 1, 2, 3, 4, 0] है।
इस समस्या को हल करने का तरीका
इस समस्या को हल करने के लिए एक जानवर बल दृष्टिकोण स्ट्रिंग में दिए गए वर्ण की स्थिति और सरणी में स्टोर करना है। दिए गए स्ट्रिंग में वर्ण की न्यूनतम दूरी ज्ञात करने के लिए अब पूरे स्ट्रिंग के साथ-साथ स्थिति सरणी पर पुनरावृति करें।
- इनपुट के रूप में एक स्ट्रिंग और एक वर्ण 'char' लें।
- एक फंक्शन डिस्टेंसटोचर (स्ट्रिंग ए, चार सीएच) एक स्ट्रिंग और एक कैरेक्टर को इनपुट के रूप में लेता है और दिए गए स्ट्रिंग में प्रत्येक कैरेक्टर से दिए गए कैरेक्टर की दूरी को प्रिंट करता है।
- स्ट्रिंग 'ए' पर पुनरावृति करें और दिए गए वर्ण की स्थिति को वेक्टर में संग्रहीत करें।
- अब स्ट्रिंग और स्थिति सरणी पर पुनरावृति करें और स्ट्रिंग में वर्ण की दूरी की गणना करें।
- स्थिति सरणी प्रिंट करें।
उदाहरण
#include<bits/stdc++.h> using namespace std; void shortestToChar(string a, char C) { vector < int > pos, dist; for (int i = 0; i < a.size(); i++) { if (a[i] == C) pos.push_back(i); } for (int i = 0; i < a.size(); i++) { int mn = INT_MAX; for (int j = 0; j < pos.size(); j++) { mn = min(mn, abs(pos[j] - i)); } dist.push_back(mn); } for (auto i: dist) { cout << i << " "; } } int main() { string a = "tutorialspoint"; char ch { 'o' }; shortestToChar(a, ch); }
उपरोक्त कोड को चलाने से आउटपुट इस प्रकार उत्पन्न होगा,
आउटपुट
3 2 1 0 1 2 3 3 2 1 0 1 2 3
स्ट्रिंग "ट्यूटोरियल्सपॉइंट" में वर्ण 'ओ' इंडेक्स 3 और इंडेक्स 10 पर मौजूद है। इस प्रकार, यदि हम इसके पहले और बाद के पात्रों से इसकी निकटतम दूरी की गणना करते हैं, तो हम दूरी प्राप्त करेंगे [3 2 1 0 1 2 3 3 2 1 0 1 2 3]।