1.写一段正则表达式:匹配出<a></a>中有值的链接,但不包括空格和“&nbsp;”
字符串如下:
  “<a href=”http://www.abc.com”>这个有值<br /></a><a href=”http://www.aaa.com”>  </a><a href=”http://www.aaa.com”> </a><a href=”http://www.aaa.com”></a>”
处理结果如下:
    “<a href=”http://www.abc.com”>这个有值<br /></a>”
2.  处理一段字符串,将字符串中重复的记录去掉,并组成新的字符串。字符串内容如下:
“aspnet开发,国内旅游,景点a,123,aspnet开发,提供,景点a,123”
注意:以逗号为分隔符,考虑效率(也可以用正则)
处理结果如下:
“aspnet开发,国内旅游,景点a,123,提供,”
3.如何保障平台的运行速度.,从代码到数据库,写写你的想法。

解决方案 »

  1.   

    第1题:正则背不出
    第2题:String sampleStr = "aspnet开发,国内旅游,景点a,123,aspnet开发,提供,景点a,123";
    String [] tempStr = sampleStr.spilt(",");
    StringBuilder result = new StringBuilder();
    for (int i = 0 ; i <= tempStr.length; i ++) {
        for (int j = i ; i <= tempStr.length; j++ ){
            if (!tempStr[i].equal(tempStr[j])) {
                result.append(tempStr[i]);
                result.append(",");
            }
        }
    }第3题:
    这个问题好难回答.......范围太广....
    3个问题只能做1个,惭愧.....
      

  2.   

    1、
    String s1 = "<a href=\"http://www.abc.com\">这个有值 <br /> </a> <a href=\"http://www.aaa.com\">  </a> <a href=\"http://www.aaa.com\"> </a> <a href=\"http://www.aaa.com\"> </a>";
    Pattern p = Pattern.compile("(<a .+?>(.+?)</a>)");
    Matcher m = p.matcher(s1);
    while(m.find()){
    String tmp = m.group(2).trim();
    if(tmp.length() == 0){
    continue;
    }
    else if(tmp.startsWith("&nbsp;")){
    continue;
    }
    System.out.println(m.group(1));

    }
    2、 String s = "aspnet开发,国内旅游,景点a,123,aspnet开发,提供,景点a,123";
    Set<String> set = new HashSet<String>();
    int i = 0;
    int j = s.indexOf(",");
    j = j ==-1 ? s.length() -1 : j;
    do{
    String tmp = s.substring(i, j).trim();
    set.add(tmp);
    i = j +1;
    j = s.indexOf(",",i);

    }while(i<j);

    for(String t : set){
    System.out.println(t);
    }3、要保证运行性能,最主要的方面要看架构,数据结构和所使用的算法,光从代码上提升不了多少性能
      

  3.   

    1.2.  split 逗号分隔后 放入 linkedhashset 即可。
      

  4.   

    split 是是正则 实现的 效率会低么??
      

  5.   

    String s = "aspnet开发,国内旅游,景点a,123,aspnet开发,提供,景点a,123";
            Set<String> set = new HashSet<String>();
            String[] strs=s.split(",");
            for(int i=0;i<strs.length;i++)
            {
             set.add(strs[i]);
            }
            
            for(String t : set){
                System.out.println(t);
            }
      

  6.   

    我看你 真是不懂了, indexof 有正则快 啊,搞笑。
      

  7.   

    技术不是靠揣测来的,我说indexof快是我测试过后得出的结论。java的正则表达式并没有你想象的那么快,当然别的语言也不见得split就好多少;我同时测试过php,split慢index数十倍
      

  8.   


    不能保证顺序和原来一致,用LinkedHashSet更合适
    不知道split的时间复杂度是多少……
      

  9.   


    嘿嘿,空手打的嘛。。有错难免,第2个for 是j <= tempStr.length; 不是i