<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(外循環)
       }
    }

    主站蜘蛛池模板: 亚洲第一页在线播放| 国产成人亚洲综合色影视| 国产天堂亚洲精品| 深夜福利在线视频免费| 免费在线观看的网站| 国产亚洲精品2021自在线| 亚洲精品乱码久久久久久久久久久久| 最近中文字幕mv免费高清视频8| 亚洲色欲色欲www在线播放 | 国产精品综合专区中文字幕免费播放| 亚洲熟妇av一区二区三区| 无码av免费毛片一区二区| 老司机午夜精品视频在线观看免费| 亚洲gv猛男gv无码男同短文| 永久久久免费浮力影院| 日本免费一区二区久久人人澡| 亚洲AV无码一区二区一二区| 亚洲国产精品无码专区在线观看 | 成人伊人亚洲人综合网站222| 久操免费在线观看| 国产成人不卡亚洲精品91| 亚洲av激情无码专区在线播放| 中国极品美軳免费观看| 一本色道久久综合亚洲精品蜜桃冫| 亚洲熟妇av一区二区三区| 免费大学生国产在线观看p| 国产高清不卡免费在线| caoporn国产精品免费| 中文字幕亚洲情99在线| 亚洲欧洲日韩不卡| 亚洲精品一级无码中文字幕| 丁香花在线观看免费观看| 国产免费网站看v片在线| 色费女人18女人毛片免费视频| 亚洲宅男精品一区在线观看| 久久久亚洲精品视频| 国产成人亚洲精品91专区手机| 97无码人妻福利免费公开在线视频 | 亚洲色偷偷狠狠综合网| 久久WWW色情成人免费观看| 久久免费高清视频|