Ask your own question, for FREE!
Computer Science 10 Online
OpenStudy (osanseviero):

I need to write a program that that prints the longest substring of s in which the letters occur in alphabetical order. For example, if s = 'azcbobobegghakl', then your program should print beggh How should this start?

OpenStudy (e.mccormick):

hmm... well, you could look at each character and see if it is <= the next. Count how many are, then make a sub string based on that. The issue is when to discard it if you find a larger string.

OpenStudy (e.mccormick):

azcbobobegghakl az alphabetical, but len 2. zc bad cb good, but not loneger cbo good, 3, drop the 2. ob bad bo good, but not loneger ob bad be good, but not loneger beg good, but not loneger begg good, loneger drop the 3 beggh good, loneger drop the 4 ha bad ak good but not longer akl good but not longer

OpenStudy (e.mccormick):

That is basically what it would do. Now for the how, use ifs and boolian comparisons.

OpenStudy (osanseviero):

so i keep creating substrings and comparing lengths, and depending on their lengths i will keep the largest one

OpenStudy (e.mccormick):

Well, you only need two bufer strings. The longes one as the answer and the now being worked on one. If the now worked becomes longer than the answer, replace the answer. >>> 'a'<'b' True >>> 'c'<'b' False >>>

OpenStudy (osanseviero):

How can I compare it with values from before?

OpenStudy (e.mccormick):

Testing each character as you go will let you decide if it is time to reset the buffer string or to add to it.

OpenStudy (osanseviero):

I need to rest.I will come back in some hours

OpenStudy (e.mccormick):

OK. This should give you something to start with. You can see what it would do and some info on how. Work with that and see how far you get.

OpenStudy (osanseviero):

In human talking, this would be done with this: 1. Take the first character 2. Save it. 3. Take the second character. 4. Compare them Option 1: a. If first character is bigger than the second one, FALSE statement, continue with first character as the substring. b. If first character is smaller, TRUE statement, new substring is first character + second one. 5. Repeat

OpenStudy (osanseviero):

But this would just work for a continued string...I dont know how it would be done for a new substring

OpenStudy (e.mccormick):

Well, if the first character is bigger, then you want to reset or erase the buffer string. If it is smaller, then you want to add it to the buffer string.

OpenStudy (e.mccormick):

And after every time through those, you want to see if the buffeer string is longer than the answer string. If so, replace the answer string with the buffer string.

OpenStudy (osanseviero):

Why does this give a number as an answer? s=raw_input("Enter a word: ") buffer="" for i in range(len(s)-1): if s[i]<=s[i+1]: buffer=str(i)+str(i+1) if s[i]>=s[i+1]: buffer=buffer print("Longest substring in alphabetical order is: " + str(buffer))

OpenStudy (e.mccormick):

|dw:1382852135152:dw|

Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!
Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!