<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一切皆可抽象

    大而無形 庖丁解牛 厚積薄發 滌慮玄覽
       ::  ::  ::  ::  :: 管理

    【原創】關于網站關鍵詞鏈接的算法

    Posted on 2005-09-06 10:46 鋒出磨礪 閱讀(290) 評論(0)  編輯  收藏 所屬分類: java算法

    可能大家都碰到過類似的問題  比如 “我國信息化工程發展迅速。”這句話中,出現了信息化 和 化工嵌套的關鍵詞,那么在加鏈接的時候如何處理?當然不可能兩個都加,只能加一個的情況下,只能通過給文檔定義類型,根據類型進行關鍵詞的類型指派。我這里實現了根據關鍵詞的順序進行替換,誰早先換誰。呵呵

    關鍵詞實體
    public class mainkey {

      private String name = "";
      private String url = "";

      public mainkey(String temp_name ,String temp_url) {
          name = temp_name;
          url  = temp_url;
      }

      public void setName(String temp_name)
      {
         name = temp_name;
      }
     
    // 
     
      public String getName()
      {
         return name;
      }

      public void setUrl(String temp_url)
      {
         url = temp_url;
      }
      public String getUrl()
      {
        return url;
      }
     

    }
    內容位置匹配
    public class station {

     

      private int starti;
      private int endi;
      private int length;
      private mainkey key;
      private int typei;

      public station(int starti,int endi,int length,mainkey key) {
        this.starti = starti;
        this.endi = endi;
        this.length = length;
        this.key = key;
        this.typei = 1;
      }

      public void setStarti(int temp)
      {
        starti = temp;
      }
      public int getStarti()
      {
        return starti;
      }

      public void setEndi(int temp)
      {
         endi = temp;
      }
      public int getEndi()
      {
        return endi;
      }

      public void setLength(int temp)
      {
        length = temp;
      }
      public int getLength()
      {
        return length;
      }

      public void setKey(mainkey key)
      {
        this.key = key;
      }
      public mainkey getKey()
      {
        return key;
      }

      public void setTypei(int temp)
      {
        typei = temp;
      }
      public int getTypei()
      {
        return typei;
      }

    }

    具體替換

    public class change {
      public change() {
      }

      public static void main(String args[])
      {
         change ch = new change();
         System.out.println(ch.changeStr("我國信息化工程發展迅速,電子化程度很高,國家大力提倡信息化。"));
      }

      public String changeStr(String cs)
      {
        //key
        java.util.ArrayList keylist = new java.util.ArrayList();
        keylist.add(new mainkey("電子","dianzi"));
        keylist.add(new mainkey("信息化","xinxihua"));
        keylist.add(new mainkey("國家","guojia"));
        keylist.add(new mainkey("化工","huagong"));

        //station
        java.util.ArrayList stationlist = new java.util.ArrayList();
        int keyi = 0;
        for (int i=0;i<keylist.size();i++)
        {
          mainkey tempkey = (mainkey)keylist.get(i);
          int length = tempkey.getName().length();
          int starti = cs.indexOf(tempkey.getName());
          int endi = starti+length-1;
          station tempstation = null;
          if (starti  >0)
          {
           tempstation = new station(starti,endi,length,tempkey);
           stationlist.add(tempstation);
          }

        }

        //change
        this.BubbleSort(stationlist);

        //開始比較

        for (int i=0;i<stationlist.size()-1;i++)
        {
          if ((((station)stationlist.get(i)).getStarti())<=(((station)stationlist.get(i+1)).getEndi()))
          {
            ((station)stationlist.get(i)).setTypei(0);
          }
        }

        //
        //開始替換
        for (int i=0;i<stationlist.size();i++)
        {
           station ss = ((station)stationlist.get(i));
           if (ss.getTypei() == 1)
           {
             mainkey key = ss.getKey();
             cs = cs.replaceAll(key.getName(),"<"+key.getUrl()+">"+key.getName()+"</"+key.getUrl()+">");
           }
        }
        return cs;
      }

       void BubbleSort(java.util.ArrayList changelist)
       { //R(l..n)是待排序的文件,采用自下向上掃描,對R做冒泡排序
         int i,j;
         int n = changelist.size()-1;
         boolean exchange; //交換標志
         for(i=0;i<n;i++){ //最多做n-1趟排序
           exchange=false; //本趟排序開始前,交換標志應為假
           for(j=n-1;j>=i;j--) //對當前無序區R[i..n]自下向上掃描
            if(((station)changelist.get(j+1)).getStarti()>((station)changelist.get(j)).getStarti()){//交換記錄
              Object tempstation = changelist.get(j+1);
              changelist.set(j+1,changelist.get(j));
              changelist.set(j,tempstation);
              exchange=true; //發生了交換,故將交換標志置為真
             }
           if(!exchange) //本趟排序未發生交換,提前終止算法
                 return;
         } //endfor(外循環)
       }
    }

    主站蜘蛛池模板: 少妇亚洲免费精品| 97人伦色伦成人免费视频| 亚洲日韩在线第一页| 国产精品亚洲专区在线播放| 日本19禁啪啪无遮挡免费动图| 亚洲欧洲精品成人久久曰| 在线免费观看一级片| 亚洲av永久中文无码精品综合 | 久久久久se色偷偷亚洲精品av| 免费无码VA一区二区三区| 久久亚洲精品无码AV红樱桃| 99在线观看视频免费| 亚洲激情电影在线| 黄瓜视频高清在线看免费下载| 亚洲色大成网站www永久男同| 日韩精品视频免费网址| 免费无码一区二区| 亚洲成色在线综合网站| 亚洲精品免费在线视频| 亚洲熟妇久久精品| 亚洲国产综合人成综合网站| 国产一级一毛免费黄片| 亚洲精品成人久久| 成人免费视频小说| 两个人日本免费完整版在线观看1 两个人的视频www免费 | 亚洲国产综合人成综合网站00| 无码中文字幕av免费放| 午夜不卡AV免费| 亚洲AV色香蕉一区二区| 毛片在线免费视频| 一级a性色生活片久久无少妇一级婬片免费放 | 中文字幕亚洲色图| 黄a大片av永久免费| 精品一区二区三区高清免费观看 | 伊人久久亚洲综合影院首页| 亚洲M码 欧洲S码SSS222| 美丽姑娘免费观看在线观看中文版| 亚洲xxxxxx| 情人伊人久久综合亚洲| 最新中文字幕免费视频| 韩日电影在线播放免费版|