4.2百度实习笔试题-2道算法-讨论

题目1

/**
* @TODO :给定一个仅由小写字母组成且长度不超过106的字符串,
* 将首字符移到末尾并记录所得的字符串,不断重复该操作,虽然记录了无限个字符串,
* 但其中不同字符串的数目却是有限的,那么一共记录了多少个不同的字符串?
* 样例输入
* abab
* 样例输出
* 2
* 样例解释
* 记录了abab和baba这2个不同的字符串。
**/
s = "abab"
print("s.length:", len(s))
ss = s * 2  # 重复一次,只ac了8%,求大神解答
bucket = []
for i in range(len(s)):
    temp = ss[i:i+len(s)]
    bucket.append(temp)
res = set(bucket)
print(res)
print(len(res))

#百度##笔试题目#
全部评论
答案是使用KMP算法,求出字符串的最小循环周期T,可参见https://blog.csdn.net/qq_17556191/article/details/95058356
点赞 回复 分享
发布于 2019-07-08 14:32
哎,该试试hash的, 直接返回len(x), 能得 17%, 是没有重复字符的情况下。
点赞 回复 分享
发布于 2019-04-03 11:55
同8%,在本地ide我把能想到的测试用例都试了,上去就是过不了,气死。。。
点赞 回复 分享
发布于 2019-04-03 11:16
看我的帖子,83%的暴力解法以及评论里有ac思路,其实bucket不要存字符串,而是存一个hash数值,会过70%以上
点赞 回复 分享
发布于 2019-04-02 22:37
我也是8%,我用java写的,想不明白
点赞 回复 分享
发布于 2019-04-02 22:25
第二题用python自带的字符串count可以ac 73%
点赞 回复 分享
发布于 2019-04-02 22:18

相关推荐

不愿透露姓名的神秘牛友
07-15 17:24
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务