解析名称的逻辑

时间:2015-01-13 20:30:27

标签: algorithm logic

我想解决这个问题,但我不确定如何正确构建逻辑来实现这一点。我得到了一个用户名列表,我被告知找到一个提取的名称。因此,举例来说,我会看到一个用户名列表,例如:

jason
dooley
smith
rob.smith
kristi.bailey
kristi.betty.bailey
kristi.b.bailey
robertvolk
robvolk
k.b.dula
kristidula
kristibettydula
kristibdula
kdula
kbdula
alexanderson
caesardv
joseluis.lopez
jbpritzker
jean-luc.vey
dvandewal
malami
jgarciathome
christophertroethlisberger

如何将每个用户名转换为提取的名称?我给出的唯一参数是每个用户名都保证至少有一个部分人名。

因此,例如,kristi.bailey将变成“Kristi Bailey” alexanderson将变成“Alex Anderson”

所以,我看到的模式是,如果我看到一段时间,我会把它变成两个字符串(可能是名字和姓氏)。如果我看到三个时期,那么它将是第一个,中间。我找不到逻辑的问题是,这个名字只是像alexanderson或jgarciathome一样聚集在一起。如何将其转换为提取的名称?我想做的事情,如果我看到2个辅音和连续的元音我会分开名字,但我不认为那会奏效。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我使用string.StartsWith方法和string.EndsWith方法并确定每个方法的最大重叠。只要它超过2个字符,就称之为通用名称。根据通用名称将它们分类到存储桶中。这是一个天真的实现,但它是我开始的地方。

示例:

string name1 = "kristi.bailey";
string name2 = "kristi.betty.bailey";

// We've got a 6 character overlap for first name:
name2.StartsWith(name1.Substring(0,6)) // this is true

// We've got a 6 character overlap for last name:
name2.EndsWith(name1.Substring(7)) // this is true

HTH!