给定字符串“ a”和字符“ char”,任务是打印距给定字符串的每个字符“ char”的距离。distance数组的大小与字符串的大小相同,因为我们必须找到字符与给定字符串的每个字符之间的距离。
例如
输入1
一个=“ nhooo”
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,6,0,1,2,3]。
输入2
a =“程序员”
char =“ r”
输出: [1、0、1、2、0、1、2、3、4、0]
说明: 在给定的字符串中,距给定字符串的每个字符的'r'距离为[1、0、1、2、0、1、2、3、4、0]。
解决此问题的蛮力方法是在字符串中找到给定字符的位置并存储在数组中。现在遍历整个字符串以及位置数组,以找到给定字符串中字符的最小距离。
以字符串和字符“ char”作为输入。
函数distanceTochar(string a, char ch)将字符串和字符作为输入,并打印给定字符到给定字符串中每个字符的距离。
遍历字符串“ a”,并将给定字符的位置存储到向量中。
现在遍历字符串和位置数组,并计算字符在字符串中的距离。
打印位置数组。
#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 = "nhooo"; char ch { 'o' }; shortestToChar(a, ch); }
运行上面的代码将生成如下输出:
输出结果
3 2 1 0 1 2 3 3 2 1 0 1 2 3
字符串“ nhooo”中的字符“ o”出现在索引3和索引10处。因此,如果我们计算距其前后字符的最近距离,则得出的距离为[3 2 1 0 1 2 3 3 2 1 0 1 2 3]。