题意理解
解决最长字串长度;
解题思路:
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;
}
};