早上起来看了这道题,思路很简单,然后想要锻炼一下用JAVA写程序的能力
现附上一段用C写的
int lengthOfLongestSubstring(char* s) {
int num=0;
int a[300];
int b[300];
memset(b,0,sizeof(b));
memset(a,0,sizeof(a));
int length=strlen(s);
int max=0;
for(int i=0;i<length;i++)
{
if(a[s[i]]==0){
a[s[i]]=1;
b[s[i]]=i;
num++;
}
else
{
memset(a,0,sizeof(a));
if(num>max){
max=num;
}
num=0;
i=b[s[i]];
}
}
if(num>max) max=num;
return max;
}
然后看了其他人的思路,发现有更简洁,思路更好的
class Solution {
public int lengthOfLongestSubstring(String s) {
int max=0;
int num=0;
int []arr=new int[300];
for(int i=0;i<300;i++){
arr[i]=-1;
}
int start=-1;
System.out.print(s);
for(int i=0;i!=s.length();i++){
int ch2int = Integer.valueOf(s.charAt(i));
if(arr[ch2int]>start){
start=arr[ch2int];
}
arr[ch2int]=i;
max=Math.max(i-start,max);
}
return max;
}
}
使用java是很不熟练,哎,道阻且长啊!