LeetCode-3-Longest Substring Without Repeating Characters(穷举)-Medium

来源:互联网 发布:全国网络诈骗报警电话 编辑:程序博客网 时间:2024/05/12 23:28

题意理解

解决最长字串长度;


解题思路:

1. 递归(好像会栈溢出);

2. 记录比较遍历中的最大值;


解题代码:

class Solution {public:    int lengthOfLongestSubstring(string s) {        if(s.length()==0){            return 0;        }        string subStr="";        int maxLen=0;        int maxSubLen=0;        int initSubPos=0;        for(int i=0;i<s.length();i++){            string::size_type idx=subStr.find(s[i]);            if(idx==string::npos){                subStr+=s[i];                maxSubLen++;            }else{                if(maxSubLen>maxLen){                    maxLen=maxSubLen;                }                maxSubLen=0;                subStr="";                cout<<"idx= "<<idx<<endl;                i=idx+initSubPos;                initSubPos=i+1;            }        }        return maxLen>maxSubLen?maxLen:maxSubLen;    }};

递归做法(会出现栈溢出)

#include<string>using namespace std;class Solution {public:    int lengthOfLongestSubstring(string s) {        if(s.length()==0){            return 0;        }        string subStr="";        int maxLen=0;        for(int i=0;i<s.length();i++){            string::size_type idx=subStr.find(s[i]);            if(idx==string::npos){                subStr+=s[i];                maxLen++;            }else{                int t=lengthOfLongestSubstring(s.substr(idx+1));                return maxLen>t?maxLen:t;            }        }        return maxLen;    }};


0 0