基础知识(比较大小函数)
-
#incloud< algroithm >;c = max(a,b);
-
java : Math.max
题目描述
- 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
暴力解法
C++
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int len = s.length(); if(len<2)return len;
int m=1,ch=s[0],p=0;
for(int i=1;i<len;i++){
for(int j=p;j<i;j++){
if( s[j]==s[i]){
m=max(m,i-p);
p=j+1;
}
}
}
m=max(m,len-p);
return m;
}
};
- 滑动窗口
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int l=0,r=0,res =0;
set<char> ms;
while(r<s.size()){ // for(int i=0;i<s.size();i++){ r无法遍历
char x = s[r];
if(ms.count(x)==0){//没有重复值
r++;
ms.insert(x);
res = max(res,r-l);
}else{
ms.erase(s[l]);
l++;//我们发现有重复的值在窗口中了,就不断地减少窗口,即令i++
}
}
return res;
}
};
java
Java String 类和支持的方法描述,c++ string和数组区别
python
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
lens = len(s)
if(lens<2):
return lens
m=1
ch=s[0]
p=0
for i in range(1,lens,1):
for j in range(p,i,1):
if( s[j]==s[i]):
m=max(m,i-p)
p=j+1
m = max(m,lens-p);
return m;
- python中len是关键字
其它
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int len=sizeof(s)/sizeof(char);//strlen(*s); !!!!!!!!???????
if(len<2)return len;
int m=1,ch=s[0],p=0;
for(int i=1;i<len;i++){
for(int j=p;j<i;j++){
if( s[j]==s[i]){
m=max(m,i-p);
p=j+1;
}
}
}
m=max(m,len-p);
return m;
}
};