java實戰5:判斷遞增數個數
阿新 • • 發佈:2021-01-08
技術標籤:java演算法字串資料結構intellij idea
java實戰5:判斷遞增數個數
藍橋杯的一道題,寫完看了別人寫的,我覺得我寫的好笨啊,還是得多記些常用的函式。我這個是用陣列實現的,感覺怪麻煩的。
原題:
【問題描述】
一個正整數如果任何一個數位不大於右邊相鄰的數位,則稱為一個數位遞增的數,例如1135是一個數位遞增的數,而1024不是一個數位遞增的數。
給定正整數 n,請問在整數 1 至 n 中有多少個數位遞增的數?
【輸入格式】
輸入的第一行包含一個整數 n。
【輸出格式】
輸出一行包含一個整數,表示答案。
【樣例輸入】
30
【樣例輸出】
26
【評測用例規模與約定】
對於 40% 的評測用例,1 <= n <= 1000。
對於所有評測用例,1 <= n <= 1000000。
程式碼如下:
import java.util.Scanner;
public class blueSelf_5 {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
int n;
n=reader.nextInt();
int t=0;
for(int p=1;p<=n;p++ ){
String s;
s= String.valueOf(p);
int l=s.length();
int m;int k;int[] a=new int[l];
m=Integer.parseInt(s);
k=m;
//123
for(int i=1;i<=l;i++){//1//2//3
a[i-1]=k%10;//a[0]=3//a[1]=2//a[2]=1
k = (k - (k % 10))/10;//k=12//k=1//k=0
}
judgeIncrease j=new judgeIncrease();
if(j.ifIncrease(a)){
t++;
}
}
System.out.println(t);
}
}
class judgeIncrease {
public boolean ifIncrease(int[] shuzu) {
if (shuzu.length == 1) {
return true;
}
else {
for (int i = 1; i <= shuzu.length-1; i++) {
if (shuzu[i-1] < shuzu[i]) {
return false;
}
}
return true;
}
}
}
執行結果: