একটি স্ট্রিং এবং একটি চেরেক্টার দেওয়া আছে। স্ট্রিংয়ের প্রতিটি চেরেক্টারের ওই চেরেক্টারের কাছ থেকে ন্যূনতম দূরত্ব বের করতে হবে।
অ্যালগরিদম (Brute Force)
- টার্গেট চেরেক্টার কোথায় কোথায় আছে, সেগুলোর ইনডেক্স একটি ভেক্টরে সংরক্ষণ করুন।
- প্রতিটি পজিশন i-এর জন্য সব টার্গেট পজিশনের সাথে |pos - i| এর ন্যূনতম মান বের করুন।
উদাহরণ
s="tutorialspoint", ch='o' → o আছে ইনডেক্স ৩ এবং ১০-তে।
আউটপুট: 3 2 1 0 1 2 3 3 2 1 0 1 2 3
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
void shortestToChar(string s, char C) {
vector<int> pos, dist;
for (int i = 0; i < s.size(); i++)
if (s[i] == C) pos.push_back(i);
for (int i = 0; i < s.size(); i++) {
int mn = INT_MAX;
for (int p : pos) mn = min(mn, abs(p - i));
dist.push_back(mn);
}
for (int d : dist) cout << d << " ";
}
int main() {
shortestToChar("tutorialspoint", 'o');
return 0;
}
আউটপুট
3 2 1 0 1 2 3 3 2 1 0 1 2 3