字符串
1. 给你一个仅包含小写英文字母和 '?' 字符的字符串 s,请你将所有的 '?' 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。
注意:你 不能 修改非 '?' 字符。
题目测试用例保证 除 '?' 字符 之外,不存在连续重复的字符。
在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。
import numpy as np import random def replace_str(str,str_total): str_len=len(str) #产生一个随机数 number=random.randint(0,25) str_obj="" for i in range(str_len): if str[i]=="?": if i==0: # ?下一个字符 temp_right = str[i + 1] # 删除连续字符串 str_total.replace(temp_right, "") elif i==str_len-1: # ?上一个字符 temp_left = str[i - 1] # 删除连续字符串 str_total.replace(temp_left, "") else: #?上下一个字符 temp_right=str[i+1] temp_left=str[i-1] #删除连续字符串 str_total.replace(temp_right,"") str_total.replace(temp_left, "") #随即选取需要替换的字符串 str_rep=str_total[number] str_obj+=str_rep else: str_obj+=str[i] return str_obj str_total="abcdefghigklmnopqrstuvwxyz" str=s = "ubv?w" result=replace_str(str,str_total) print(result)
2.给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。
这里 if n%i==0这句判断函数的作用是判断i是否的n的约数,如果是就将s分为n/i个窗口逐个比较,没符合一次向后滑动一次,最后查看窗口的位置,如果已经滑到了s的最后,那么则符合题意,返回true
逐个判断完所有的0-n//2的数后如果仍然没找到符合条件的数那么返回false
def find_str(str): str_len=len(str) for i in range(1,str_len//2+1):#i为子串的长度 if str_len%i==0: a=str[:i]#子串 j=i while j<str_len and str[j:j+i]==a: j+=i if j==str_len: return True return False result=find_str("ababa") print(result)
posted on 2020-10-10 10:49 happygril3 阅读(101) 评论(0) 收藏 举报
浙公网安备 33010602011771号