下面的代碼是網上找的,我按照自己的了解加的注釋:
public class test01 {
public static void main(String[] args) {
// 理論上,題目所要求的排列組成的數字,都包含在122345~543221之間,是以外層循環控制數值周遊
for(int i=;i<=;i++){
// 将數字i轉換成char類型的數組s,例如當i=122345時,s[]={'1','2','2','3','4','5'}
char s[]=new Integer(i).toString().toCharArray();
// 聲明變量s1,s2,s3,s4,s5,flag作為判斷依據,并設定初始值
int s1=;
int s2=;
int s3=;
int s4=;
int s5=;
boolean flag=true;
// 聲明變量j作為數組s中的元素的下标(index)
for(int j=;j<s.length;j++){
// 判斷數組s中的元素是否包含在{'1','2','3','4','5'}中,是則對應的s1,s2,s3,s4,s5加1
// 其中s1代表元素'1'在目前數組s中出現的次數,s2,s3,s4,s5同理
if(s[j]=='1'){s1++;}
if(s[j]=='2'){s2++;}
if(s[j]=='3'){s3++;}
if(s[j]=='4'){s4++;}
if(s[j]=='5'){s5++;}
// 判斷'3'與'5'是否相連,是則不符合題目要求,flag傳回false
if(j!=s.length-){
if(s[j]=='3'&&s[j+]=='5'||s[j]=='5'&&s[j+]=='3'){flag=false;}
}
}
// 判斷數組s中第三位的元素是否為'4',是則不符合題目要求,flag傳回false
if(s[]=='4'){
flag=false;
}
// 判斷目前數值i是否符合題目所要求的排列,是則輸出i
if(s1==&&s2==&&s3==&&s4==&&s5==&&flag){
System.out.println(i);
}
}
}