我正在研究一个问题,以找到最长的子字符串而不重复字符。在尝试解决方案时,我编写了这段代码。我不是在寻求解决方案,而只是在寻求代码以这种方式工作的原因。
#include<iostream>
#include<map>
using namespace std;
class Solution {
public:
int lengthOfLongestSubstring(string s) {
map<char,int> mp;
map<char,int>::iterator it;
int i=0,k=0,max=0;
while(i<s.length()){
it = mp.find(s[i]);
if(it==mp.end()){
k++;
}
else{
k=k-distance(mp.begin(),it);
cout<<distance(mp.begin(),it)<<" "; //this distance
mp.erase(mp.begin(),it);
}
if(k>max){
max=k;
}
mp.insert({s[i],1});
i++;
}
return max;
}
};
int main(){
Solution obj;
cout<<obj.lengthOfLongestSubstring("yvyf");
}
当我输入为“ yvyf”时,它将距离打印为1,但是当我输入为“ avaf”或“ pvpf”时,打印距离为0。