首页 新闻 搜索 专区 学院

数据处理问题

0
悬赏园豆:30 [已解决问题] 解决于 2016-10-13 11:01

  怎么将下面的数据-------------↓  (有思路就可以了,一直找不到完美的方法,原始数据比较多。。。)

          ID                                                DZ
 320100000000717 玄武区黄埔路2号黄埔大厦B1B2座
 320100000000717 玄武区黄埔路2号黄埔大厦C1C2座 
 320100000000717 玄武区黄埔路2号黄埔大厦D1座 
 320100000000717 玄武区黄埔路2号黄埔大厦D2座 
 320100000000844 秦淮区明匙路100号-1 
 320100000000844 秦淮区明匙路100号-2 
 320100000000844 秦淮区明匙路108号-1 
 320100000000844 秦淮区明匙路108号-2 
 320100000000844 秦淮区明匙路108号-3 
 320100000000844 秦淮区明匙路108号-4

转变成------------------->>>↓

320100000000717 玄武区黄埔路2号黄埔大厦B1B2座,C1C2座,D1座 ,D2座

320100000000844 秦淮区明匙路100号-1,-2 

320100000000844 秦淮区明匙路108号-1,-2,-3 ,-4

走在阡陌的路上的主页 走在阡陌的路上 | 初学一级 | 园豆:136
提问于:2016-10-13 09:53
< >
分享
最佳答案
1

 

呵呵…… 这个问题很好解决。园豆都是我的啦 ,哈哈哈哈

这个用到了,我们上学时 数据结构与算法中的,求两个 字符串 “最长公共字符串”的解法。

1 将每一行数据都看作一行字符串。

2 求出这些 数据 最长的公共字符串。

求解方法: 

 1 320100000000717 玄武区黄埔路2号黄埔大厦B1B2座
 2 320100000000717 玄武区黄埔路2号黄埔大厦C1C2座 
 3 320100000000717 玄武区黄埔路2号黄埔大厦D1座 
 4  320100000000717 玄武区黄埔路2号黄埔大厦D2座

可以看到他们“最长的公共字符串”是  320100000000717 玄武区黄埔路2号黄埔大厦

然后将他们的不同部分 追加到后面。 B1B2座 C1C2座  D1座  D2座

这样子问题就解决了。

收获园豆:30
田麦成 | 小虾三级 |园豆:1984 | 2016-10-13 10:12

那这些数据

320100000000844 秦淮区明匙路100号-1 
 320100000000844 秦淮区明匙路100号-2 
 320100000000844 秦淮区明匙路108号-1 
 320100000000844 秦淮区明匙路108号-2 
 320100000000844 秦淮区明匙路108号-3 
 320100000000844 秦淮区明匙路108号-4

就变成

320100000000844 秦淮区明匙路100号-1,100号-2,108号-1,108号-2 ,108号-3,108号-4

我想要-----↓

320100000000844 秦淮区明匙路100号-1,-2 

320100000000844 秦淮区明匙路108号-1,-2,-3 ,-4 

走在阡陌的路上 | 园豆:136 (初学一级) | 2016-10-13 10:16

@走在阡陌的路上:大哥,你没看到是最长么?最长公共字符串

 

你的那些数据应该会变成

320100000000844 秦淮区明匙路100号-1,-2

320100000000844 秦淮区明匙路108号-1,-2,-3 ,-4

记着是最长,最长,最长

我的回答就是对的

当然,这里需要加一些自己的判断。不能完全照搬书本

1 2 最长的 秦淮区明匙路100号。但是再和三比较就变成了 秦淮区明匙路 你就要加上自己的判断了

田麦成 | 园豆:1984 (小虾三级) | 2016-10-13 10:22

@田麦成: 求最长的逻辑是什么,求教!!

走在阡陌的路上 | 园豆:136 (初学一级) | 2016-10-13 10:27

@走在阡陌的路上:我去……你不是说有思路就行了么 这是一个思路 代码你自己找找,翻翻书,再修改修改

田麦成 | 园豆:1984 (小虾三级) | 2016-10-13 10:28

@田麦成: 我也有这个想法,但是求出来的 最长字符串 是   "秦淮区明匙路10"  处理过后 变成秦 "淮区明匙路"

 

我是把两个String,比较,得出最长字符串 是 "秦淮区明匙路100号-"  再跟第三个 dz比较  最长字符串就变

成 "秦淮区明匙路10" 了。

走在阡陌的路上 | 园豆:136 (初学一级) | 2016-10-13 10:33

@走在阡陌的路上:你的求解思路都不正确。

用“树”来求解。

把同一支最长的的都记录下来

田麦成 | 园豆:1984 (小虾三级) | 2016-10-13 10:52

@田麦成: 谢谢,豁然开朗!!!

走在阡陌的路上 | 园豆:136 (初学一级) | 2016-10-13 10:54
其他回答(2)
0

这个有点扯啊,怎么会有这种需求啊?

顾晓北 | 园豆:10219 (专家六级) | 2016-10-13 09:55

主要是因为数据量大,看起来不方便,数据又有一定的相似度,客户就像缩减一下数据量。

支持(0) 反对(0) 走在阡陌的路上 | 园豆:136 (初学一级) | 2016-10-13 10:03
0

出现这种需求的原因是当初设计表的时候,没有将Address 分开,如果能够将 “秦淮区明匙路100号-1”  拆分区,路,号,三级结构,就不会出现此类问题,我觉得楼主应该考虑增加三个column

悦光阴 | 园豆:2249 (老鸟四级) | 2016-10-13 10:37

这些数据都是各种人填写的汇聚上来的,各种写法都有,而且数据量还很大

鼓楼区马台街139号
鼓楼区管家桥9号17层A.B.C.D座
鼓楼区管家桥9号负二层22号微型车位
下关区姜家圩69号
玄武区红森公寓2、3、5、6 幢45号车位
下关区四平苑72号

支持(0) 反对(0) 走在阡陌的路上 | 园豆:136 (初学一级) | 2016-10-13 10:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册