代码为相似的输入给出不同的结果

时间:2020-06-13 09:37:56

标签: c++ string

我正在研究一个问题,以找到最长的子字符串而不重复字符。在尝试解决方案时,我编写了这段代码。我不是在寻求解决方案,而只是在寻求代码以这种方式工作的原因。

#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。

0 个答案:

没有答案