楼主: shanshanlate
跳转到指定楼层
上一主题 下一主题
收起左侧

谷狗新鲜店面

🔗
dengzeyu147 2018-11-29 04:14:41 | 只看该作者
全局:
雨雪霏霏 发表于 2018-11-29 03:37
你好 我认为substring贪心是错误的 比如
str1: abcca
str2: acb

请问这样做对吗
您好!
本帖隐藏的内容需要积分高于 120 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 120 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies

评分

参与人数 2大米 +4 收起 理由
kdzhang + 3 给你点个赞!
yyy884849 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
雨雪霏霏 2018-11-29 04:32:57 | 只看该作者
全局:
dengzeyu147 发表于 2018-11-29 04:14
请问这样做对吗
**** 本内容被作者隐藏 ****

line 11是 != 吧?
然后感觉应该是对的~
回复

使用道具 举报

🔗
yyy884849 2018-11-29 04:51:06 | 只看该作者
全局:
dengzeyu147 发表于 2018-11-28 15:14
请问这样做对吗
**** 本内容被作者隐藏 ****

感觉唯一的问题就是 如果没有第一问去判断b能否构成a的话
这个代码有可能会死循环

补充内容 (2018-11-28 15:52):
在你的代码中是a能否构成b

评分

参与人数 1大米 +1 收起 理由
dengzeyu147 + 1 系统检测到uid 给你滥加分,加分全部扣除。

查看全部评分

回复

使用道具 举报

🔗
dengzeyu147 2018-11-29 04:53:32 | 只看该作者
全局:
yyy884849 发表于 2018-11-29 04:51
感觉唯一的问题就是 如果没有第一问去判断b能否构成a的话
这个代码有可能会死循环

哈哈 这个代码是假设到能构成的情况下,因为楼主给的问题是放一起的, 我忘了把他们放一起了 sry 谢谢
回复

使用道具 举报

🔗
zigchg 2018-11-29 08:28:25 来自APP | 只看该作者
全局:
雨雪霏霏 发表于 2018/11/29 03:37:14


你好 我认为substring贪心是错误的 比如
str1: abcca
str2: acb
最优解应该是4 因为str1[0:2]可以由str2的a,b构成
贪心的话只能匹配substr...

有道理诶 如果是subsequence就不可以贪心了
回复

使用道具 举报

无效楼层,该帖已经被删除
🔗
byfwh 2018-12-10 00:06:12 | 只看该作者
全局:
shanshanlate 发表于 2018-11-28 03:59
第二题我是用了iterative的就直接用loop去check那个第一个的substring是不是存在在第二个里面,当时面试 ...

感谢楼主提供思路
请问这样下来为什么是O(n*m)呢
判断一个substring存不存在第二个里面是O(m^2) (不用KMP的话) 然后
是这样判断的吗?
取str1的m长前缀 判断一下
取str1的m-1长前缀 判断一下
..
取str1的1长前缀 判断一下
中间存在就跳出 这就是 O(m^3)
然后判断下一个
总的不就是O(m^3*N)吗
回复

使用道具 举报

🔗
stellari 2018-12-10 04:00:46 | 只看该作者
全局:
byfwh 发表于 2018-12-10 00:06
感谢楼主提供思路
请问这样下来为什么是O(n*m)呢
判断一个substring存不存在第二个里面是O(m^2) (不用 ...

题目说能够从str2中移走任意数目的字符,也就是说能用来匹配str的不是str2的substring,而是(非连续的)subsequence。方法就是在str当前还未被匹配的部分中,不停地找能够匹配subsequence of str2的最长前缀。在str中找一个能匹配str2子序列的前缀的naive算法需要用时O(m);最坏情况下,每个匹配部分的长度都为1,也就是说总共要进行O(n)次匹配。所以总时间是O(nm)。

评分

参与人数 1大米 +3 收起 理由
michaelzju + 3 有道理/

查看全部评分

回复

使用道具 举报

🔗
byfwh 2018-12-10 04:03:57 | 只看该作者
全局:
stellari 发表于 2018-12-10 04:00
题目说能够从str2中移走任意数目的字符,也就是说能用来匹配str的不是str2的substring,而是(非连续的) ...

感谢楼主 如果是subsequence的话 的确是这样的
我看还有一个帖子说的follow up是 如果只能取str2的substring
回复

使用道具 举报

🔗
stellari 2018-12-10 04:27:32 | 只看该作者
全局:
byfwh 发表于 2018-12-10 04:03
感谢楼主 如果是subsequence的话 的确是这样的
我看还有一个帖子说的follow up是 如果只能取str2的subst ...

抱歉,我不是楼主……

如果能用来匹配的一定是str2的substring,而非subsequence的话。那只需要把上面的“str中找一个能匹配str2子序列的最长前缀”这步改成“str中找一个能匹配str2子字符串的最长前缀”即可。于是,寻找一个匹配的时间由O(m)变成了O(m^2)(naive算法)。 因此naive算法情况下总时间应该变为O(nm^2)。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表