牛客题目:
游游希望你构造一个长度为n的、仅由'y'、'o'、'u'三种字符组成的字符串,需要保证该字符串包含恰好k个"you"子串。你能帮帮她吗? 如果无法构造,请输出-1。 否则输出一个长度为n的合法的字符串。
解析题意:
字符串构造问题。
代码:
#方法一
n,k=map(int,input().split())
ans=''
if n<3*k:
print(-1)
else:
ans+='you'*k
ans+='u'*(n-3*k)
print(ans)
#方法二
n,k=map(int,input().split())
if n<k*3:
print(-1)
else:
print("you"*k+"u"*(n-k*3))
代码分析:
- 从用户输入中读取两个整数
n
和k
,使用map(int, input().split())
来完成这一任务。其中,input()
函数获取用户输入的字符串,split()
函数将字符串按空格分割为多个部分,map(int, ...)
将分割后的每个部分转换为整数。 - 判断
n
是否小于3*k
。如果是,则输出-1
;否则,继续下一步操作。 - 接收最后结果
知识点:
map
函数的用法如下:
map(function, iterable, ...)
function
:这是一个将被应用到每个可迭代对象的元素上的函数。在这个代码中,这个函数是int
,表示将每个元素转换为整数。iterable
:这是一个可以迭代的对象,比如列表或元组。在这个代码中,这个对象是用户输入的字符串,该字符串被split()
方法分割成一个单词列表。
举例:
numbers = [1,2,3,4,]
def doubler(n):
return n*2
result = map(doubler,numbers)
print(result)
print(list(result))