求最大公約數和最小公倍數
- /**
- * 求最大公約數和最小公倍數
- */
- public class Convention {
- /**
- * 求兩數的最大公約數
- */
- int divisor(int m,int n){
- if(m%n==0){
- return n;
- }else{
- return divisor(n,m%n);
- }
- }
- /**
- * 求兩數的最小公倍數
- */
- int gbs(int a,int b){
- int gbs = 0;
- gbs = a*b/divisor(a,b);
- return gbs;
- }
- }
求一組數組的衆數
- public static double mode(double[] array) {
- Arrays.sort(array);
- int count = 1;
- int longest = 0;
- double mode = 0;
- for (int i = 0; i < array.length - 1; i++) {
- if (array[i] == array[i + 1]) {
- count++;
- } else {
- count = 1;//如果不等於,就換到了下一個數,那麼計算下一個數的次數時,count的值應該重新符值爲一
- continue;
- }
- if (count > longest) {
- mode = array[i];
- longest = count;
- }
- }
- System.out.println(longest);//打印出這個數出現的次數已判斷是否正確
- return mode;
- }
公司筆試題就1個,要求在10分鐘內作完。
題目如下:用1、2、2、3、4、5這六個數字,用java寫一個main函數,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"與"5"不能相連。
- package test;
/**
* 用1,2,2,3,4,5,這六個數字,用java寫一個main函數,打印出所有不同的排列,如:512234,412345等,要求:“4”不能排第3位,“1”與“5”不能相連。
* @author kafka0102
*
*/
public class ATest {
private static boolean is1Or5(char a,char b){
if(a=='1' && b=='5')return true;
if(a=='5' && b=='1')return true;
return false;
}
private static int countOf2(char[] num,int index){
int n=0;
for(int i=0;i<index;i++){
if(num[i]=='2')n++;
}
return n;
}
private static boolean hasSameNumber(int index,char a, char[] num){
for(int i=0;i<index;i++){
if(num[i]==a)return true;
}
return false;
}
public static int testArrange(char[] number,char[] num,int index){
int size = 0;//組合的個數
int pos1=1,pos2=2;//該變量爲重複的2的數組位置,可以提取出來作爲參數
int emp = countOf2(num,index);//得到當前的數組中有幾個2
for(int i=0;i<num.length;i++){
if(number[i]=='2'){//當前的數字爲2
if(emp >= 2){//數組中2的個數多於2個
continue;
}else if(emp == 1){//數組中有一個2時,要求當前的2不能爲位置1的2
if(i==pos1)continue;
}else{
if(i==pos2)continue;//數組中沒有2時,要求當前的2不能爲位置2的2
}
}else{
if(index==2 && number[i]=='4')continue;//去除4
if(index>0 && is1Or5(num[index-1],number[i]))continue;//去除相鄰的1和5
if(hasSameNumber(index,number[i], num))continue;//去除重複數字
}
num[index] = number[i];
if(index==5){
System.out.println(num);
size++;
}else{
size = size + testArrange(number,num,index+1);
}
}
return size;
}
public static void aTest(){
char[] number = {'1','2','2','3','4','5'};
char[] num = new char[number.length];
int size =0;
size = testArrange(number,num,0);
System.out.println("size="+size);
}
public static void main(String[] args) {
aTest();
}
}
有一個String s="SDsBEaA"
要求產生這樣的結果:s="AaBDESs"
public class MySort {
public static void main(String[] args) {
List<Character> result = new ArrayList<Character>();
String s = "SDsBEAa";
char[] strArray = s.toCharArray();
// strArray = ABDESas
Arrays.sort(strArray);
for (int i = 97; i < 122; i++) {
char tempLowCase = (char) i;
char tempUpperCase = (char) (i - 32);
for (int j = 0; j < strArray.length; j++) {
if (Character.isUpperCase(strArray[j])) {
if (tempUpperCase == strArray[j]) {
result.add(tempUpperCase);
}
}
if (tempLowCase == strArray[j]) {
result.add(strArray[j]);
}
}
}
System.out.println(result);
}
}
本文部分代碼摘自:
http://ravi.iteye.com/blog/122255(最大公約數)
http://www.blogjava.net/kafka0102/archive/2007/03/13/103434.html(數字組合)