Write a function countDigits(n) that takes an integer n and returns how many digits it contains.
Requirements
- Handles both positive and negative integers.
- Return 1 if
nis 0 (since 0 is a single-digit number).
Constraints
- Time Complexity:
O(log₁₀(n))— Each division reduces one digit. - Space Complexity:
O(1)— Only a few variables are used.
Examples
Input: 259
Output: 3
Input: -1035
Output: 4
Input: 0
Output: 1
Step-by-Step Approach
- Handle Zero: If
n == 0, return 1 directly. - Convert to Positive: Use
abs(n)to ignore sign. - Initialize a counter: Set
count = 0. - Loop: While
n > 0:- Divide
nby 10 using integer division. - Increment
count.
- Divide
- Return: The
countafter the loop finishes.
function countDigits(n) {
if (n === 0) return 1;
n = Math.abs(n);
let count = 0;
while (n > 0) {
n = Math.floor(n / 10);
count++;
}
return count;
}
console.log(countDigits(259)); // 3
#include <stdio.h>
#include <stdlib.h>
int countDigits(int n) {
if (n == 0) return 1;
n = abs(n);
int count = 0;
while (n > 0) {
n /= 10;
count++;
}
return count;
}
int main() {
int num = 259;
int result = countDigits(num);
printf("%d\n", result); // Output: 3
return 0;
}
#include <iostream>
#include <cstdlib>
using namespace std;
int countDigits(int n) {
if (n == 0) return 1;
n = abs(n);
int count = 0;
while (n > 0) {
n /= 10;
count++;
}
return count;
}
int main() {
int num = 259;
int result = countDigits(num);
cout << result << endl; // Output: 3
return 0;
}
public class Main {
public static int countDigits(int n) {
if (n == 0) return 1;
n = Math.abs(n);
int count = 0;
while (n > 0) {
n /= 10;
count++;
}
return count;
}
public static void main(String[] args) {
int num = 259;
int result = countDigits(num);
System.out.println(result); // Output: 3
}
}
def count_digits(n):
if n == 0:
return 1
n = abs(n)
count = 0
while n > 0:
n //= 10
count += 1
return count
num = 259
result = count_digits(num)
print(result) # Output: 3
