编程问题,希望高手指点一下,至于用什么语言,最好是python,其他也行吧,希望自己能看的懂
发布网友
发布时间:2022-04-06 14:20
我来回答
共5个回答
热心网友
时间:2022-04-06 15:49
# -*- coding: utf8 -*-
#处理逻辑:
#1.遍历每个字母,获取以该字母开头并符合条件的子串
#2.若子串长度大于当前最大值则更新当前最大值,若等于当前最大值则追加至列表
s=raw_input('输入:')
maxl=0 #最大子串的长度
ls=[] #存放符合要求的子串列表(结果),符合要求的子串可能有多个
def getSubStr(s): #定义函数获取以该字母开头并符合条件的子串
l=len(s) #长度
i=0 #位置
while(i<l-1):
if(s[i]<=s[i+1]): #字符可以直接比较大小
i+=1
else:
break
return s[0:i+1]
for i in range(0,len(s)): #遍历每个字母
tmp=getSubStr(s[i:len(s)])
if(len(tmp)>maxl):#当前子串的长度大于或者等于已知最长子串时需要进行处理
maxl=len(tmp)
ls=[tmp]
elif(len(tmp)==maxl):
ls.append(tmp)
#输出结果
for i in ls:
print i
热心网友
时间:2022-04-06 17:07
import re
s=raw_input("输入小写字母字符串:")
while not re.match("^[a-z]+$",s):
print "输入的字符串含有小写字母以外的字符,请重新输入"
s=raw_input("输入小写字母字符串:")
newlen=biggestlen=1
biggeststr=newstr=oldc=s[0]
for c in s[1:]:
if c>=oldc:
newstr+=c
newlen+=1
else:
if newlen>biggestlen:
biggestlen=newlen
biggeststr=newstr
newstr=c
newlen=1
oldc=c
if newlen>biggestlen:
biggeststr=newstr
print biggeststr
用提问里的两个字符串测试是正确的
热心网友
时间:2022-04-06 18:42
from collections import defaultdict
#命令式
def findmax_c(s):
buf=defaultdict(list)
string=s if len(s)<2 else s[0]
for i in range(1,len(s)):
if s[i-1]<=s[i]:
string+=s[i]
else:
buf[len(string)].append(string)
string=s[i]
buf[len(string)].append(string)
return buf[max(buf)]
#函数式:
def findmax_f(s):
def recur(s,mbr='',buf=defaultdict(list)):
if s=='':
buf[len(mbr)].append(mbr)
return buf[max(buf)]
else:
if mbr=='' or mbr[-1]<=s[0]:
return recur(s[1:],mbr+s[0])
else:
buf[len(mbr)].append(mbr)
return recur(s[1:],s[0])
return recur(s)
if __name__ == '__main__' :
for x in ['','a','aggz','abcaggza','abcabc','zfa','zfa']:
print '字符:{}命令式:{}函数式:{}'.format(
x.ljust(10),
str(findmax_c(x)).ljust(20),
str(findmax_f(x)).ljust(20))
结果:
>>>
字符: 命令式:[''] 函数式:['']
字符:a 命令式:['a'] 函数式:['a']
字符:aggz 命令式:['aggz'] 函数式:['aggz']
字符:abcaggza 命令式:['aggz'] 函数式:['aggz']
字符:abcabc 命令式:['abc', 'abc'] 函数式:['abc', 'abc']
字符:zfa 命令式:['z', 'f', 'a'] 函数式:['z', 'f', 'a']
字符:zfa 命令式:['z', 'f', 'a'] 函数式:['z', 'f', 'a']
热心网友
时间:2022-04-06 20:33
string = raw_input('Please input your string:')
result = [[]]
oldchar = None
for char in string:
if char < oldchar:
result.append([])
result[-1].append(char)
oldchar = char
result.sort(key=len)
maxlen = len(result[-1])
while len(result[-1]) == maxlen: #多个最长字符串是依次打印
print ''.join(result.pop())
if not result: break
热心网友
时间:2022-04-06 22:41
我想到的是用ascii码