怎么将下面的数据-------------↓ (有思路就可以了,一直找不到完美的方法,原始数据比较多。。。)
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
呵呵…… 这个问题很好解决。园豆都是我的啦 ,哈哈哈哈
这个用到了,我们上学时 数据结构与算法中的,求两个 字符串 “最长公共字符串”的解法。
1 将每一行数据都看作一行字符串。
2 求出这些 数据 最长的公共字符串。
求解方法:
1 320100000000717 玄武区黄埔路2号黄埔大厦B1B2座
2 320100000000717 玄武区黄埔路2号黄埔大厦C1C2座
3 320100000000717 玄武区黄埔路2号黄埔大厦D1座
4 320100000000717 玄武区黄埔路2号黄埔大厦D2座
可以看到他们“最长的公共字符串”是 320100000000717 玄武区黄埔路2号黄埔大厦
然后将他们的不同部分 追加到后面。 B1B2座 C1C2座 D1座 D2座
这样子问题就解决了。
那这些数据
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
@走在阡陌的路上:大哥,你没看到是最长么?最长公共字符串
你的那些数据应该会变成
320100000000844 秦淮区明匙路100号-1,-2
320100000000844 秦淮区明匙路108号-1,-2,-3 ,-4
记着是最长,最长,最长
我的回答就是对的
当然,这里需要加一些自己的判断。不能完全照搬书本
1 2 最长的 秦淮区明匙路100号。但是再和三比较就变成了 秦淮区明匙路 你就要加上自己的判断了
@田麦成: 求最长的逻辑是什么,求教!!
@走在阡陌的路上:我去……你不是说有思路就行了么 这是一个思路 代码你自己找找,翻翻书,再修改修改
@田麦成: 我也有这个想法,但是求出来的 最长字符串 是 "秦淮区明匙路10" 处理过后 变成秦 "淮区明匙路"
我是把两个String,比较,得出最长字符串 是 "秦淮区明匙路100号-" 再跟第三个 dz比较 最长字符串就变
成 "秦淮区明匙路10" 了。
@走在阡陌的路上:你的求解思路都不正确。
用“树”来求解。
把同一支最长的的都记录下来
@田麦成: 谢谢,豁然开朗!!!
这个有点扯啊,怎么会有这种需求啊?
主要是因为数据量大,看起来不方便,数据又有一定的相似度,客户就像缩减一下数据量。
出现这种需求的原因是当初设计表的时候,没有将Address 分开,如果能够将 “秦淮区明匙路100号-1” 拆分区,路,号,三级结构,就不会出现此类问题,我觉得楼主应该考虑增加三个column
这些数据都是各种人填写的汇聚上来的,各种写法都有,而且数据量还很大
鼓楼区马台街139号
鼓楼区管家桥9号17层A.B.C.D座
鼓楼区管家桥9号负二层22号微型车位
下关区姜家圩69号
玄武区红森公寓2、3、5、6 幢45号车位
下关区四平苑72号