相同字母的最短距离,求解喵喵喵。

相同字母的最短距离

时间限制: 1000ms

空间限制: 65536kB

题目描述

时间:1s 空间:512M

题目描述:

给我们一个长度为n的字符串,我们想要知道相同字母之间的最短距离是多少(输出一个最小值即可)。

注:字母只有a~z26个小写字母,每个字符串都保证至少有一对字母相同。

题目输入:

输入第一行为一个整数 n,(字符的个数)。

第二行输入长度为n的字符串。

题目输出:

输出一个整数

样例输入:

10
abcacbcbad

样例输出:

2

数据范围:

2<=n <= 1e5;

样例解释:

其中 c(第三个位置,c(第5个位置),距离为2。 b(6)与 b(8)距离为2等。因为最低的相同字母之间的距离为2,所以我们就输出2。
我的样例:

#include <bits/stdc++.h>
using namespace std;

long long n;
string s;
int l=97;
int k;

int main(){
  cin>>n>>s;
  int ans=0x3f3f3f3f;
  for(int i=0;i<n;i++){
    for(int j=i+1;j<n;j++){
      if(s[i]==s[j]){
        ans=min(ans,j-i);
      }
    }
  }
  cout<<ans;
  return 0;
}

不知道为什么超时了

1 个赞
for(int i=0;i<n;i++){
    if(pos[s[i]-'0']){
      ans=min(ans,i-pos[s[i]-'0']);
    }
    pos[s[i]-'0']=i;
  }

核心代码

1 个赞