2020-1-15(73)

#249、输入一个字符串,输出该字符串中对称的子字符串的最大长度。
#比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。

s="googledeepeed"
sub_s_list=[] #子串
for i in range(len(s)):
    for j in range(len(s)-i):
        sub_s_list.append(s[i:i+j+1])
print("所有子串为:",sub_s_list)

sym_sub_s_dict={}  #对称子串
for i in sub_s_list:
    if i[:]==i[::-1]:
        sym_sub_s_dict[i]=len(i)
print("对称子串有:",sym_sub_s_dict)

for k,v in sym_sub_s_dict.items():
    if v==max(sym_sub_s_dict.values()):
        print("最长对称子串是%s,长度是%s" %(k,v))

#249、在TeX中,左双引号是``,右双引号是”。输入一篇包含双引号的文章,你的任务是把它转换成TeX格式。

def convert_str(s):
    n = 0
    for v in s:
        if v =='“':
            s = s.replace('“','``')
    return s
s = '“To be or not to be,” quoth the Bard, “thatis the question”.'
print(convert_str(s))

#250、如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。
#例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。
#输入一个长度不超过80的串,输出它的最小周期。 样例输入:HoHoHo 样例输出:2 (竞赛题)

s = input(">> ")
flag = 0
for i in range(len(s)):
    for j in range(1,81):
        if s[:i]*j == s and len(s[:i]) >= 1:
            flag = 1
            print(s[:i])
            print(len(s[:i]))
    if flag == 1:
        break

#251、”abcdefghi”,如果n = 2,移位后应该是”hiabcdefg”

def move_str(s,n):
    if not isinstance(s,str) or not isinstance(n,int):
        return None
    if n==len(s):
        return s
    new_s=s[len(s)-n:]+s[0:(len(s)-n)]
    return new_s
    
print(move_str("abcdefghi",2))
print(move_str("abcdefghi",0))
print(move_str("abcdefghi",8))
print(move_str("abcdefghi",9))

#252、从键盘输入多个任意长度的单词,当输入“#”符时结束输入(字符串内容不包括“#”),然后程序反向输出所有输入的单词。

word_list=[]
while True:
    word=input("请输入任意长度单词,结束输入请输入#:")
    if word=="#":
        print(word_list[::-1])
        break
    else:
        word_list.append(word)

#253、如何确定一个纯ascii字符串中是否所有字符全部互不相同

s = "sdfkjljkjlkjkl2323"
s2 ="12abc"
#方法一
def is_all_diff(s):
    d={}
    for i in s:
        d[i]=1
    if len(d)==len(s):
        return True
    else:
        return False
print(is_all_diff(s))
print(is_all_diff(s2))
#方法二
def is_all_diff(s):
    for i in s:
        if s.count(i)>1:
            return False
    return True

print(is_all_diff(s))
print(is_all_diff(s2))

#254、s = “ajldjlajfdljfddd”,去重并从小到大排序输出"adfjl"

s = "ajldjlajfdljfddd"
result=list(set(list(s)))
print("".join(sorted(result)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值