题目的主要信息:

  • 输入一个十进制整数,计算它的位数
  • 如果输入的整数不大于0则输出这个数

具体做法:

我们先用if语句判断输入这个数是否大于0,如果否则输出这个数,如果是我们才对它计算位数。

计算十进制数的位数,我们用连除法,每次除以10,除掉这个数的最后一位,然后统计一次直到为0.

alt

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        scan.close();
        if(num <= 0) //先判断是否小于等于0
            System.out.println(num);
        else{
            int count = 0; //记录位数
            while(num > 0){ //每次除10除掉最后一位,统计1次,直到为0
                count++;
                num /= 10;
            }
            System.out.println(count);
        }
    }

}

复杂度分析:

  • 时间复杂度:O(log10n)O(log_{10}n),使用连除法循环次数为这个数的log级
  • 空间复杂度:O(1)O(1),无额外空间