#!/usr/bin/python
#encapsulation
'''
def judge(st):
n = len(st)
if n==0 or st is None:
return None
print('The argument passed in is %s' % st)
newstr=''
for s in st:
if s.isalpha():
newstr+=s
N=len(newstr)
if N==0:
return None
elif N==1:
print('The longest substr of %s is %s,length:%s' % (newstr,newstr,N))
return newstr,N
print('The parameter after processing is %s' % newstr)
'''
def lsnoDup(st):
#judge is valid string or not, if not,convert it to be
n = len(st)
if n==0 or st is None:
return None
print('The argument passed in is %s' % st)
newstr=''
for s in st:
if s.isalpha():
newstr+=s
N=len(newstr)
if N==0:
return None
elif N==1:
print('The longest substr of %s is %s,length:%s' % (newstr,newstr,N))
return newstr,N
print('The parameter after processing is %s' % newstr)
dic = {}
lst = []
#startIndex = 0
maxLen = 0
for i in range(0,N):
for j in range(i,N):
if newstr[j] not in lst and (j-i)<=len(lst):
lst.append(newstr[j])
else:
#how to record startIndex?
#startIndex = i
if maxLen<len(lst):
maxLen = len(lst)
dic={}
dic[''.join(lst)] = len(lst)
lst=[]
continue
#dic2 = sorted(dic.items(), key=lambda x: x[1], reverse=True)
k = dic.keys()[0]
k=''.join(k)
v = dic.values()[0]
print('The longest substr of %s is %s,length:%s' % (newstr,k,v))
return dic
str1 = ' abca dbcbb '
#'bcad' assert
str2 = ' $sd1#111$sv da123!!!221&eSSDSDG^svda121^svda124^ '
str3 = '123'
res1 = lsnoDup(str1.strip())
res2 = lsnoDup(str2.strip())
res3 = lsnoDup(str3.strip())
print(res1)
print(res2)
print(res3)