2015-06-22 36 views
0

我正在尝试编写符合标题的代码。如果两个字符串是相同的大小,只需打印出第一串编写打印字母顺序最长的字符串的代码

例如:

s = 'abcbcd' 

会打印出

'abc' 

这是我到目前为止有:

old_order = '' 
re = '' 

for r in range(len(s)): 
    order = '' 
    for letter in s[r:]: 
     try: 
      if letter <= s[s.index(letter)+1]: 
       order += letter 
     except: 
      order += letter 
     else: 
      order += letter 
      print(order) 
      if r is 0: 
       old_order = order 
      if len(order) > len(old_order): 
       re = order 

      else: 
       re = old_order 
print(re) 

我得到:

aabbcbbc 
+1

想必这是行不通的,否则你就不会问在这里,但...这是什么或者不它做什么? – TessellatingHeckler

+0

你有什么问题? – Loocid

+0

我在帖子中加入 – dustinyourface

回答

0
def isInAlphabeticalOrder(word): 
    preString='' 
    alphaString='' 
    for char in word: 
     if(alphaString==''): 
      alphaString=char 
     elif(alphaString[-1]<=char): 
      alphaString+=char 
     elif(alphaString[-1]>char): 
      if(len(preString)<len(alphaString)): 
       preString=alphaString 
       alphaString=char 
      else: 
       alphaString=char 
    if(len(alphaString)>len(preString)): 
     preString=alphaString 
    print(preString) 

编辑:为了详细说明为什么你的代码没有产生正确的结果 - 你与字母try语句追加订单不分胜负。因此,如果try语句返回true,则字母会附加两次,如果不是,则字母仍会附加。 编辑:固定码

+0

这将不会导致最长的子字符串,但第一个子字符串 – k4vin

+0

谢谢,我显然没有正确阅读这个问题。将解决这个问题 – user3636636

0

代码:

def longest_sub_str(A): 
    final_res = "" 
    tmp = "" 
    prev = "" 
    for i in A: 
     if prev < i: 
      prev = i 
      tmp += i 
     else: 
      prev = "" 
      if len(tmp)>len(final_res): 
       final_res = tmp 
      tmp = "" 
    return tmp if len(tmp)>len(final_res) else final_res 


print longest_sub_str('abcdddabcddefbcd') 

输出:

abcd 
相关问题