▼ Question
--List donne une chaîne de longueur (s) arbitraire (s)
▼sample input
python
s ="aba"
n =10
▼sample output
python
7
image
abaabaabaa <-7 un
▼my answer
python
def repeatedString(s, n):
a = s.count("a")
ans=i=0
#Trouvez le nombre de a contenu dans les caractères excédentaires
r = n%len(s)
if r!=0:
while i<r:
if s[i]=="a":
ans += 1
i+=1
ans += a*int(n/len(s))
return ans
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
s = input()
n = int(input())
result = repeatedString(s, n)
fptr.write(str(result) + '\n')
fptr.close()
--Pour extraire des éléments d'un objet fixe --Pendant la répétition jusqu'à ce que la condition spécifiée soit remplie
Remplacer while par for
def repeatedString(s, n):
a = s.count("a")
ans=0
#Trouvez le nombre d'itérations(math.ne pas utiliser le sol)
r = n%len(s)
if r!=0:
for i in range(r):
if s[i]=="a":
ans += 1
ans += a*int(n/len(s))
return ans
repeatedString(s, n)
▼ Traitement
Notation d'inclusion
def repeatedString(s, n):
a = s.count("a")
ans=0
#Trouvez le nombre d'itérations(math.ne pas utiliser le sol)
r = n%len(s)
if r!=0:
ans = sum([(1 if s[i]=="a" else 0) for i in range(r)])
ans += a*int(n/len(s))
return ans
repeatedString(s, n)
J'ai créé une chaîne de caractères répétée pour le nombre de caractères spécifié et en compté le nombre, mais lorsque le nombre est grand, une erreur de mémoire se produit.
python
s ="babbaabbabaababaaabbbbbbbababbbabbbababaabbbbaaaaabbaababaaabaabbabababaabaabbbababaabbabbbababbaabb"
n = 860622337747
▼ Le processus de recherche d'une chaîne de caractères est lourd.
python
def repeatedString(s, n):
#Avance (maths).le sol n'est pas utilisé)
if float(n/len(s)):
r = int(n/len(s)) +1
else:
r = n/len(s)
#Demander une chaîne
ans = x = 0
ss = s*r
for letter in ss:
x += 1
if x>n:
break
elif letter == "a":
ans += 1
return ans
repeatedString(s, n)
#MemoryError:
Recommended Posts