Lanqiaoカップ:数字が増加している(char配列バージョンに変換)(理解しやすい)

トピック

【問題点】
   正の整数のいずれかの桁が右側の隣接する桁以下の場合、それを増数と呼びます。たとえば、1135は増数、1024は増数ではありません。
正の整数nが与えられた場合、整数1からnの間で何桁が増加していますか?
【入力形式】入力
   の1行目に整数nが含まれています。
【出力形式】
   出力行には、回答を示す整数が含まれています。
[サンプル入力]
30
[サンプル出力]
   26
[評価ユースケースのスケールと規則]
   評価ユースケースの40%について、1 <= n <= 1000。
   テストケースの80%で、1 <= n <= 100000。
   すべての測定ケースで、1 <= n <= 1000000。

問題解決のアイデア

  個人的な謙虚な意見:私はそれを書いたときに再帰を考えていなかったので、問題を解決するときに、判断のために数値をcharタイプの配列に変換しました。(個人的には、再帰よりも理解しやすいはずだと思います)

予防

   1から9は判断を必要としません

回答

  n = 1000:219
  n = 100000:2001
  n = 1000000:5004

コード


import java.util.Scanner;

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner scanner = new Scanner(System.in);
        int n=scanner.nextInt();
        int count=0;
        for(int i=1;i<=n;i++){
    
    
            if(f(i)){
    
     //调用f
                count++;
            }
        }
        System.out.println(count);
    }

    public static boolean f(int i){
    
    
        if(i<10){
    
     //1到9不需要进行判断
            return true;
        }else{
    
    
            char []s =(i+"").toCharArray();//转换为char数组
            for(int j=0;j<s.length-1;j++){
    
     //判断
                if(s[j]>s[j+1]){
    
    
                    return false;
                }
            }
        }
        return true;
    }
}

おすすめ

転載: blog.csdn.net/qq_47168235/article/details/108908583
おすすめ