一共两道编程题100% 6%.....
(1)两个数组an、bn,数组cn=[ci=max(ai,bi)]。数组cn是根据an和bn的值动态变化的。定义了两种操作:op=1,x,y:交换ax和ay;op=2,x,y:交换bx和by。
输入:an,bn,m组操作[(1, x, y), (2, x, y), ......]
输出:m行,每行对应操作后的数组cn之和。
思路:暴力解法容易超时。可以先算cn的和sum,之后每次操作之前先让sum减去cx和cy,在进行操作并更新cx和cy,在得到sum = sum +cx +cy。这样就不用遍历cn求和,不会超时。
(2)小红拿到了一个仅有英文字母组成的字符串,她想知道某个单词在该字符串中出现了多少次?
输入用例:
S:bobob
T:bob
输出:
2
思路:直接调用python string.count()无法得到正确答案。例如”bobob”会视为有两个”bob”,单词后缀和前缀有重叠的部分也会算作新单词。直接使用暴力解法,逐个遍历S会超时。考虑用下标j遍历S每次匹配到一个单词T,j就往后移T/2个位置,这样可以把后缀算进去,但还是只能通过6%的用例。