2015-06-22 78 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 
相關問題