string a="absorb absorb absorb absorb apple angel badly bad"
string b="a,b"
我把a按空格分开然后每个单词一个字母一个字母分开对比,如果单词多的话速度太慢了。
有没好方法。
上面例子 a中找到 字母a 和b 同时出现的单词取出来(badly)也在内,b,a都在单词里。
现在问题 a中的每个单词的长度不能确定,每个单词是空格分开的。
第二个问题,字符串b中的字母的长度也不能确定 有可能找单个字母,有可能三个 "a,b"和"b,a"的结果一样。
也有可能"a,b,e"
谢谢各位。菜鸟如果单词有几百个或几千个,用split,substring 一个一个拆开对比速度有点慢。
6 个解决方案
#1
用ling做可能效率更高
#2
你想要优化运行效率可以自己写一个状态机。
可以实现O(N*M)的效率,其中N是字符串a的长度,M是字符串b中的字符个数。
还很适合初学者练手:)
可以实现O(N*M)的效率,其中N是字符串a的长度,M是字符串b中的字符个数。
还很适合初学者练手:)
#3
据我所知,万个以下楼主举例的那种单词串用split一次性劈开花不了多久。用substring更快。所以不明白楼主多久算快。
如果想更快,建议按二进制逐个判读空格符来取单个字符,再用stringbuilder拼接。如果还想更快,用c++写类似的函数来做。
如果想更快,建议按二进制逐个判读空格符来取单个字符,再用stringbuilder拼接。如果还想更快,用c++写类似的函数来做。
#4
string a="absorb absorb absorb absorb apple angel badly bad";
string b = "a,b";
var p = "(?=.*" + string.Join(")(?=.*", b.Split(',')) + ").*";
foreach(var x in a.Split(' '))
if(Regex.IsMatch(x, p)) Console.WriteLine(x);

测试数据不要重复,应把各种情况都考虑到
#5

版主 这个出现一个问题了 ,比如这个例子单词里面ab ba 这样出现才能找到单词,如果 axxxbxx ,这样的单词取不出来了?就是意思a和b令居的时候。
#6
看错了版主不好意思,我不仔细。。。谢谢。
#1
用ling做可能效率更高
#2
你想要优化运行效率可以自己写一个状态机。
可以实现O(N*M)的效率,其中N是字符串a的长度,M是字符串b中的字符个数。
还很适合初学者练手:)
可以实现O(N*M)的效率,其中N是字符串a的长度,M是字符串b中的字符个数。
还很适合初学者练手:)
#3
据我所知,万个以下楼主举例的那种单词串用split一次性劈开花不了多久。用substring更快。所以不明白楼主多久算快。
如果想更快,建议按二进制逐个判读空格符来取单个字符,再用stringbuilder拼接。如果还想更快,用c++写类似的函数来做。
如果想更快,建议按二进制逐个判读空格符来取单个字符,再用stringbuilder拼接。如果还想更快,用c++写类似的函数来做。
#4
string a="absorb absorb absorb absorb apple angel badly bad";
string b = "a,b";
var p = "(?=.*" + string.Join(")(?=.*", b.Split(',')) + ").*";
foreach(var x in a.Split(' '))
if(Regex.IsMatch(x, p)) Console.WriteLine(x);

测试数据不要重复,应把各种情况都考虑到
#5

版主 这个出现一个问题了 ,比如这个例子单词里面ab ba 这样出现才能找到单词,如果 axxxbxx ,这样的单词取不出来了?就是意思a和b令居的时候。
#6
看错了版主不好意思,我不仔细。。。谢谢。