avatar
B*1
1
用suffix tree可以做到o(n),但是现场面试肯定不可能当场写这个suffix tree的。
有另一个解法是lcs(str, reverse(str)),
但是这个方法对于这种string不适合,"abcfghicba"
出来的结果会是abc,是不是这种情况下可以做post-processing,再check得到的这个
substring是不是palindrome啊。
thanks。
avatar
d*n
2
以前的 logo 挺好,非得换个不伦不类的新的。有这功夫不如多弄点75k开卡bonus出来。
avatar
a*1
3
suffix array nlogn
avatar
B*1
4
可否说具体点,万分感谢。
avatar
a*1
5
http://en.wikipedia.org/wiki/Suffix_array
和suffix tree用法几乎一样,但是构造很简单,直接sort pointer就可以了
以前的算法都是用suffix array来构造suffix tree的,后来才发现O(n)的suffix tree
构造算法,,不过那个没可能在面试时候写出来,写出来估计面试官也看不懂

【在 B*******1 的大作中提到】
: 可否说具体点,万分感谢。
avatar
d*d
6
suffix array/ suffix tree都只能找到lcs,
但是没有解决他的问题.

tree

【在 a********1 的大作中提到】
: http://en.wikipedia.org/wiki/Suffix_array
: 和suffix tree用法几乎一样,但是构造很简单,直接sort pointer就可以了
: 以前的算法都是用suffix array来构造suffix tree的,后来才发现O(n)的suffix tree
: 构造算法,,不过那个没可能在面试时候写出来,写出来估计面试官也看不懂

avatar
a*1
7
suffix array可以保存suffix的index
这样check palindrome可以在search的时候check
而不用找完再check

【在 d*******d 的大作中提到】
: suffix array/ suffix tree都只能找到lcs,
: 但是没有解决他的问题.
:
: tree

avatar
g*i
8
suffix array的lcp 怎么在nlogn算?有code看看吗?

tree

【在 a********1 的大作中提到】
: http://en.wikipedia.org/wiki/Suffix_array
: 和suffix tree用法几乎一样,但是构造很简单,直接sort pointer就可以了
: 以前的算法都是用suffix array来构造suffix tree的,后来才发现O(n)的suffix tree
: 构造算法,,不过那个没可能在面试时候写出来,写出来估计面试官也看不懂

avatar
r*g
9
Hi
能否详细说说suffix tree怎么做,如果像你们讨论的那样suffix tree很难O(n)构造出
来,那这个题的复杂度究竟是多少呢?我能想到的就是构造两个suffix tree混在一起
,然后再找LCA。
你这里的lcs是什么意思?
谢谢了

【在 B*******1 的大作中提到】
: 用suffix tree可以做到o(n),但是现场面试肯定不可能当场写这个suffix tree的。
: 有另一个解法是lcs(str, reverse(str)),
: 但是这个方法对于这种string不适合,"abcfghicba"
: 出来的结果会是abc,是不是这种情况下可以做post-processing,再check得到的这个
: substring是不是palindrome啊。
: thanks。

avatar
d*d
10
恩,这个倒是可以做得到.

【在 a********1 的大作中提到】
: suffix array可以保存suffix的index
: 这样check palindrome可以在search的时候check
: 而不用找完再check

avatar
B*1
11
用suffix array的话,需要建立string 和reverse string的混合的suffix array,还
是只需要建立一个string的suffix array,还是没有弄懂整个用suffix array怎么做,
请指教。

【在 a********1 的大作中提到】
: suffix array可以保存suffix的index
: 这样check palindrome可以在search的时候check
: 而不用找完再check

avatar
d*d
12
建立混合的, 一起sort.
然后,走一遍,只看来自不同array的相邻两个,看的时候再check一下index看是不是真的
是.

【在 B*******1 的大作中提到】
: 用suffix array的话,需要建立string 和reverse string的混合的suffix array,还
: 是只需要建立一个string的suffix array,还是没有弄懂整个用suffix array怎么做,
: 请指教。

avatar
B*1
13
Thanks, 我也是这么想的,但是觉得这么做还不如用lcs(str,reverse(str)),dp的时候
每次update maximum length的时候check check是不是palindrome.
avatar
f*i
14
楼主,如果你觉得lcs(str,reverse(str)),dp是一个好方法,那么也就是说,你觉得O(n2)
是一个可以接受的解
请看看我提供的解法,这个也是O(n2)时间的
for(every character in string){
1) in aba case:
keep testing two points on its both sides to see if they are the
same
2) in abba case:
Same approach but in abba format
}
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。