用java求吸血鬼數字

來源:互聯網
上載者:User

吸血鬼數字是指位元為偶數的數字,可以由一對數字相乘得到,而這對數字各包含乘積的一

半位元的數字,其中從最初的數字中選取的數字可以任意排序。以2個0結尾的數字是不允許

的,例如,下列數字都是吸血鬼數字:

1260 = 21*60

1827 =21*87

2187 =27*81

寫該程式的思想是:

1.首先找到滿足這個等式的3個數,然後再從其中選出是吸血鬼數位數字。下面的vampire

函數就是先找出這樣的等式,然後調用CompareString()函數來判斷是否是吸血鬼數字。

public static void Vampire(){for(int i =999;i<9999;i++){if((i%100) == 0) continue;for(int j=11;j<100;j++)for(int k =11;k<j;k++){if(j*k == i){String si ="" +i;String sj ="" +j;String sk ="" +k;if(CompareString(si,sj,sk)){System.out.println(si +" =" +sj +"*"+sk);}}}}}

2.調用CompareString()函數有3個String參數,分別表示是乘積,乘數,乘數。在進行判斷時,將2個乘數變為一個String再和乘積進行比較。比較過程中使用了一個Sort()的排序函數。

public static boolean CompareString(String target,String str1,String str2){int count  = 0;String StrTemp = str1 + str2;char s1[] =target.toCharArray();char s2[] = StrTemp.toCharArray();Sort(s1);Sort(s2);for(int i =0;i<s1.length;i++){if(s1[i] == s2[i]){count++;}}if(count == s1.length) return true;  // 如果每一位都對應相同,則返回true;否則為falseelse return false;}

3.Sort()函數的作用將char數組中的數字,按照從小到大的順序進行排列。如一個char數組為{'1','2','6','0'}則經過Sort()函數變為{'0','1','2','6'}.所以最後比較是否為吸血鬼數字,就是比較2個字串經過排序後是否一樣。其實2個乘數組合的字串與乘積的字串只是字母順序不一樣。經過排序後,就可以很好的比較了。

public static void Sort(char[] numArray){int length = 0;length = numArray.length;for(int i =1; i<length;i++){int j = i -1;char Temp  = numArray[i];while(j>=0&&Temp<numArray[j]){numArray[j+1] = numArray[j];j--;}numArray[j+1] = Temp;}}

點擊下載程式原始碼

另附一網友JAVA實現吸血鬼數位高效演算法:http://blog.csdn.net/java2000_net/article/details/3851203

到此,就可以進行判斷是否為吸血鬼數字了。

通過求吸血鬼數字,有一個很重要的思想對於如求類似的問題。如:

String s1 = "abcdsddgff";

String s2 = "ddfgfascdb";

要判斷這2個字串是否含有相同的字母,並且對於同一字母個數是否相同,就可以應用本思想。可以先將字串排序後,再來進行比較。排序後s1變為abcdddffgs,s2變為abcdddffgs,則可以很容易比較了。至於排序演算法,可以有很多選擇。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.