日期:2014-05-20  浏览次数:21084 次

高效去重复,求解
下面一段是需要去除重复的文字:
侵害人员:本地, 侵害人员:老年, 侵害人员:人大代表, 侵害人员:发廊妹, 侵害人员:1, 
侵犯物品:一般物品, 侵犯物品:保险柜, 侵犯物品:1, 
地点属性:高层楼宇, 地点属性:机关, 地点属性:银行, 地点属性:工厂, 地点属性:城中村, 地点属性:1, 
作案时机:雨天, 作案时机:工作日, 作案时机:早晨, 作案时机:1, 
入口出口:.门, 入口出口:1, 
进入方式:撬门, 进入方式:破坏窗栅, 进入方式:击砸锁体, 进入方式:阳台, 进入方式:挖洞, 进入方式:钥匙开锁, 进入方式:1, 
作案工具:1, 作案工具:随身携带, 
动机起因:图财, 动机起因:无经济来源, 动机起因:1。

下面一段是需要达到的效果(以其中某段为例):
侵害人员:本地、老年、人大代表、发廊妹、1;
侵犯物品:一般物品、保险柜、1;
地点属性:高层楼宇、机关、银行、工厂、城中村、1;
作案时机:雨天、工作日、早晨、1。

高分求解,不论是java代码还是JS代码!

------解决方案--------------------
你需要这个 
com.google.common.collect.Multimap

包名叫google-guava.jar包,自己网上下。

这个类表示一个key中可以存多个value,比如put("侵害人员",a);put("侵害人员",b);这样get("侵害人员")就会得到a,b了。

------解决方案--------------------
那还不如自己写呢。
Java code

      String str = "侵害人员:本地, 侵害人员:老年, 侵害人员:人大代表, 侵害人员:发廊妹, 侵害人员:1,";
      String type = str.substring(0, str.indexOf(":") + 1);
      StringBuffer sb = new StringBuffer();
      sb.append(type);
      sb.append(str.replaceAll(type, ""));
      System.err.println(sb);

------解决方案--------------------
探讨

这样替换的只是第一组,第二组呢?你从哪里subtring?


------解决方案--------------------
Java code
public static void main(String[] args) {
//        System.out.println(contain("dssd"));
        String s1 = "侵害人员:本地, 侵害人员:老年, 侵害人员:人大代表, 侵害人员:发廊妹, 侵害人员:1,";
        String s2 = "侵犯物品:一般物品, 侵犯物品:保险柜, 侵犯物品:1,";
        String s3 = "地点属性:高层楼宇, 地点属性:机关, 地点属性:银行, 地点属性:工厂, 地点属性:城中村, 地点属性:1,";
        String s4 = "作案时机:雨天, 作案时机:工作日, 作案时机:早晨, 作案时机:1,  ";
        String s5 = "入口出口:.门, 入口出口:1, ";
        s1 = s1.replaceAll(",(.*?):", "、");
        s2 = s2.replaceAll(",(.*?):", "、");
        s3 = s3.replaceAll(",(.*?):", "、");
        s4 = s4.replaceAll(",(.*?):", "、");
        s5 = s5.replaceAll(",(.*?):", "、");
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
        System.out.println(s4);
        System.out.println(s5);
    }

------解决方案--------------------
探讨
function pro(res){
if(res[0].length<=0)return res;
var key = res[0].substring(0,res[0].indexOf(":")+1);

var lastRes = res[0].substring(key.length);

var current = lastRes.substring(0,lastRes.indexOf(",",lastRes.lastIndexOf(key)));

lastRes = lastRes.substring(current.length+1);
current = current.replaceAll(key,"");

res[0] = lastRes;
res[1] += key+current+"/n";
alert(res[1]);
pro(res);
}