qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          Java實(shí)現(xiàn)字符串的匹配

           假設(shè)我們有一個(gè)一定個(gè)數(shù)的字母組成字串,我給每個(gè)字母分配一個(gè)素?cái)?shù),從2開(kāi)始,往后類推。這樣A將會(huì)是2,B將會(huì)是3,C將會(huì)是5,等等。現(xiàn)在我遍歷第一個(gè)字串,把每個(gè)字母代表的素?cái)?shù)相乘。你最終會(huì)得到一個(gè)很大的整數(shù),對(duì)吧?
            然后——輪詢第二個(gè)字符串,用每個(gè)字母除它。如果除的結(jié)果有余數(shù),這說(shuō)明有不匹配的字母。如果整個(gè)過(guò)程中沒(méi)有余數(shù),你應(yīng)該知道它是第一個(gè)字串恰好的子集了。
            思路總結(jié)如下:
            1.定義最小的26個(gè)素?cái)?shù)分別與字符'A'到'Z'對(duì)應(yīng)。
            2.遍歷長(zhǎng)字符串,求得每個(gè)字符對(duì)應(yīng)素?cái)?shù)的乘積。
            3.遍歷短字符串,判斷乘積能否被短字符串中的字符對(duì)應(yīng)的素?cái)?shù)整除。
            4.輸出結(jié)果。
            至此,如上所述,上述算法的時(shí)間復(fù)雜度為O(m+n),時(shí)間復(fù)雜度最好的情況為O(n)
          package contcurrentandalgorithm;
          /**
          *
          * @author Administrator
          * zyyjiao@mail.ustc.edu.cn
          */
          public class SushuStringFind {
          public static void main(String[] args) {
          int primeNumber[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
          61, 67, 71, 73, 79, 83, 89, 97, 101};
          String strOne = "ABCDEFGHLMNOPQRS";
          String strTwo = "ABCDEFGHL";
          // 這里需要用到大整數(shù)
          int product = 1;   //大整數(shù)除法的代碼,下頭給出。
          // 遍歷長(zhǎng)字符串,得到每個(gè)字符對(duì)應(yīng)素?cái)?shù)的乘積
          for (int i = 0; i < strOne.length(); i++) {
          int index = strOne.charAt(i) - 'A';
          product = product * primeNumber[index];
          }
          // 遍歷短字符串
          for (int j = 0; j < strTwo.length(); j++) {
          int index = strTwo.charAt(j) - 'A';
          // 如果余數(shù)不為0,說(shuō)明不包括短字串中的字符,跳出循環(huán)
          if (product % primeNumber[index] != 0) {
          break;
          }
          if (strTwo.length() == j) //cout << "true" << endl;
          {
          System.out.println("true");
          } else //cout << "false" << endl;
          {
          System.out.println("false");
          }
          }
          }
          }

          posted on 2013-11-28 11:18 順其自然EVO 閱讀(375) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2013年11月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 广州市| 清河县| 连山| 汕尾市| 永仁县| 清新县| 辽源市| 巴中市| 尖扎县| 奉新县| 桑植县| 辽宁省| 山东省| 宁都县| 全南县| 东兰县| 新源县| 乐都县| 彝良县| 梓潼县| 浦县| 乐平市| 香河县| 杭锦旗| 密云县| 景谷| 得荣县| 漳平市| 都安| 顺昌县| 改则县| 肇庆市| 柳林县| 喜德县| 黔西| 莱芜市| 潼南县| 宁陕县| 万源市| 衡水市| 突泉县|