题意整理

  • 输入一个整数。
  • 计算对应的位数。

方法一(循环)

1.解题思路

  • 定义一个位数变量,记录对应位数变化。
  • 使用一个while循环,只要num大于0,则位数加一,同时num除10,表示消耗掉最低位。

动图展示: alt

2.代码实现

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();

        //如果小于等于0,直接输出
        if(num<=0){
            System.out.println(num);
        }
        //记录整数位数
        int cnt=0;
        while(num>0){
            //每消耗一个位置,位数加一
            cnt++;
            num/=10;
        }
        System.out.println(cnt);

    }

}

3.复杂度分析

  • 时间复杂度:假设输入的数是n,总共需要循环log10nlog_{10}n,所以时间复杂度为O(log10n)O(log_{10}n)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)