Redian新闻
>
Split a String into valid English words
avatar
Split a String into valid English words# Java - 爪哇娇娃
D*y
1
最近在打算申请绿卡EB1,找了个律师帮助写推荐人的推荐信,但是律师写的推荐信,
比较注重research方面,就是research本身,很technical。然后呢,对这个work 或者
project产生的一些honor或者比如发表的文章啊,媒体报道啊,就是一笔带过。比如用
了很大一段说research具体是什么,然后就在最后一句话说,这个工作被×××报道了
。也没说这个媒体是什么样的媒体,影响力之类。这样我们看这个推荐信的感觉,似乎
就是全在讲技术,大家也知道技术本身就是隔行如隔山,也看不出什么来,我们读着这
个这个推荐信感觉比较weak或者说不是很强的感觉。
我们和律师讨论过这个问题,律师的回答是,推荐信本身更专注research,而那些
honor和媒体报道会在petition letter再说,如果在petition letter里和推荐信里都
说的话,就重复而且篇幅过长了。
我想问问大家的推荐信都是怎么个重点。会不会在推荐信里就强调这个工作被××报道
啦,这个会议非常重要,多少人参加之类这种比较容易量化比较容易比较的importance
,还是重点就事论事的讲技术本身的影响
avatar
s*8
2
相思一片无力渲
折笔砸砚不复言
唯知太白能相照
追星急上凤鸣山
几许清光几许烟
万千直树影如鞭
一鞭一鞭复一鞭
肝肠方待来日续
嶙峋傲骨和风言
莫容风霜侵
努力添睡眠
好吃好好玩
玩完来找俺。。。
avatar
l*0
3
如果一个词典 Dictionary 包含英文中的单词,将一个 String 分割为合法的单词。假
设 Dictionary 存在一个 HashSet 中。
String str = "Iloveyou"
分割为 "I love you".
String segment(String str, HashSet dictionary){
String segmented="";

// Iloveyou
int size = str.length()+1;
int j = 0;
int i;
for(i=1; iString subStr = str.substring(j,i);
if(dictionary.contains(subStr)){
segmented += subStr + " ";
j = i;
}
}
if(j==i-1){
return segmented;
}else{
return null;
}
}
谁能写一个 recursive 的版本?
avatar
y*1
4
I think it is ok. My case was handled in a similar style and it was approved
.
avatar
f*n
5
iterative当然比recursive好
avatar
l*0
6
如果输入是 "goodsdelivery", 输出就是 good-s-delivery, 上面那个就不好。这时候
最好匹配字典中长度最大的单词,得到 goods-delivery。这种情况下,那个
iterative 的 function 就比较难处理。

【在 f*******n 的大作中提到】
: iterative当然比recursive好
avatar
W*o
7
it could also be good-sde-liver-y ?

【在 l******0 的大作中提到】
: 如果输入是 "goodsdelivery", 输出就是 good-s-delivery, 上面那个就不好。这时候
: 最好匹配字典中长度最大的单词,得到 goods-delivery。这种情况下,那个
: iterative 的 function 就比较难处理。

avatar
l*0
8
Possible, but unlikely, since 'sde' shouldn't be an entry in a 'normal'
dictionary. Here want to focus on the algorithm itself, although 'sde' could
be an entry in a domain specific dictionary.

【在 W***o 的大作中提到】
: it could also be good-sde-liver-y ?
avatar
l*m
9
你这个有问题...比如“nationalpark”. 应该是"national park"
但是你的只会返回null

【在 l******0 的大作中提到】
: 如果一个词典 Dictionary 包含英文中的单词,将一个 String 分割为合法的单词。假
: 设 Dictionary 存在一个 HashSet 中。
: String str = "Iloveyou"
: 分割为 "I love you".
: String segment(String str, HashSet dictionary){
: String segmented="";
:
: // Iloveyou
: int size = str.length()+1;
: int j = 0;

avatar
p*2
10
这个算法根本就不对吧。
avatar
l*0
11
是,取决于词典;先找到 nation, 然后剩下的 alpark 找不到一个 match, 切分不完
整,所以返回 null
所以,最好是找最大单词来匹配。一个实际可用的 segmenter,最大匹配也有问题,最
佳的需要用到概率,也就是额外的数据来支持最优选择。
这里只想练习下算法,所以上面的可行。

【在 l*******m 的大作中提到】
: 你这个有问题...比如“nationalpark”. 应该是"national park"
: 但是你的只会返回null

avatar
l*0
12
你给个 working 的 recursive 的。

【在 p*****2 的大作中提到】
: 这个算法根本就不对吧。
avatar
l*0
13
确实有问题, 简单化了

【在 l*******m 的大作中提到】
: 你这个有问题...比如“nationalpark”. 应该是"national park"
: 但是你的只会返回null

avatar
p*2
14

dict =
'I': true
'love': true
'you': true

dfs = (str, curr, res)->
if curr is str.length
return console.log res.join(" ")

for i in [curr...str.length]
sub = str[curr..i]
if dict[sub]
res.push sub
dfs str, i+1, res
res.pop

break_word = (str)->
dfs str, 0, []
break_word "Iloveyou"

【在 l******0 的大作中提到】
: 你给个 working 的 recursive 的。
avatar
b*s
15
你这个字典效率太差了,推荐你看看suffix tree

【在 l******0 的大作中提到】
: 如果一个词典 Dictionary 包含英文中的单词,将一个 String 分割为合法的单词。假
: 设 Dictionary 存在一个 HashSet 中。
: String str = "Iloveyou"
: 分割为 "I love you".
: String segment(String str, HashSet dictionary){
: String segmented="";
:
: // Iloveyou
: int size = str.length()+1;
: int j = 0;

avatar
g*t
16
这个问题如果深究,就复杂了, 还牵扯到拼写错误, 相识程度,
人工智能问题,
avatar
l*m
17
牛人写的就是漂亮。这是一道经典的data scientist的考题

【在 p*****2 的大作中提到】
:
: dict =
: 'I': true
: 'love': true
: 'you': true
:
: dfs = (str, curr, res)->
: if curr is str.length
: return console.log res.join(" ")
:

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。