字符的最短距离
题目描述:
给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。
例题:
输入: S = “loveleetcode”, C = ‘e’
输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
说明:
字符串 S 的长度范围为 [1, 10000]。
C 是一个单字符,且保证是字符串 S 里的字符。
S 和 C 中的所有字母均为小写字母。
思路:
1、首先是要获取到每个字符的位置
2、每个字母先碰到那个字母e(因为可能字符串S里面不止一个字母e),然后记录下他们下标的差值(取绝对值)。再一步步遍历下去,如果遇到比这个差值小的则是最小距离。如果没有则刚刚记录的差值就是最小距离。
代码:
string S = Console.ReadLine();
string C = "e";
int length = -1;//定义一个永远不可能的差值
for (int i = 0; i < S.Length; i++)
{
for (int j = 0; j < S.Length; j++)
{
if (S[j] == C[0])//找到字母e时
{
if (length > Math.Abs(i - j) || length == -1)
{
length = Math.Abs(i - j);//记录的是最小的差值
}
}
}
Console.WriteLine(length + ",");
length = -1;
}