Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Check Whether a number is Duck Number or not

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

A Duck number is a positive number which has zeroes present in it, For example 3210, 8050896, 70709 are all Duck numbers. Please note that a numbers with only leading 0s is not considered as Duck Number. For example, numbers like 035 or 0012 are not considered as Duck Numbers. A number like 01203 is considered as Duck because there is a non-leading 0 present in it.

Examples :

Input : 707069 
Output : It is a duck number. 
Explanation: 707069 does not contains zeros at the beginning.

Input : 02364 
Output : It is not a duck number. 
Explanation: in 02364 there is a zero at the beginning of the number.

Recommended Practice

Implementation:

C++




// C++ Program to check whether
// a number is Duck Number or not.
#include <iostream>
using namespace std;
 
// Function to check whether
// given number is duck number or not.
bool check_duck(string num)
{
    // Ignore leading 0s
    int i = 0, n = num.length();
    while (i < n && num[i] == '0')
        i++;
 
    // Check remaining digits
    while (i < n) {
        if (num[i] == '0')
            return true;
        i++;
    }
 
    return false;
}
 
// Driver Method
int main(void)
{
    string num = "1023";
    if (check_duck(num))
        cout << "It is a duck number\n";
    else
        cout << "It is not a duck number\n";
 
    return 0;
}

Java




// Java Program to check whether a
// number is Duck Number or not.
 
import java.io.*;
class GFG {
 
    // Function to check whether
    // the given number is duck number or not.
    static boolean check_duck(String num)
    {
        // Ignore leading 0s
        int i = 0, n = num.length();
        while (i < n && num.charAt(i) == '0')
            i++;
 
        // Check remaining digits
        while (i < n) {
            if (num.charAt(i) == '0')
                return true;
            i++;
        }
 
        return false;
    }
 
    // Driver Method
    public static void main(String args[]) throws IOException
    {
        String num = "1023";
        if (check_duck(num))
            System.out.println("It is a duck number");
        else
            System.out.println("It is not a duck number");
    }
}

Python




# Python program to check whether a number is Duck Number or not.
 
# Function to check whether
# the given number is duck number or not.
def check_duck(num) :
 
    # Length of the number(number of digits)
    n = len(num)
    
    # Ignore leading 0s
    i = 0
    while (i < n and num[i] == '0') :
        i = i + 1
 
    # Check remaining digits
    while (i < n) :
        if (num[i] == "0") :
            return True
        i = i + 1
 
    return False
     
 
# Driver Method
num1 = "1023"
if(check_duck(num1)) :
    print "It is a duck number"
else :
    print "It is not a duck number"
 
# Write Python3 code here

C#




// C# Program to check whether a
// number is Duck Number or not.
using System;
 
class GFG {
     
    // Function to check whether
    // the given number is duck
    // number or not.
    static bool check_duck( String num)
    {
         
        // Ignore leading 0s
        int i = 0, n = num.Length;
        while (i < n && num[i] == '0')
            i++;
 
        // Check remaining digits
        while (i < n) {
            if (num[i] == '0')
                return true;
            i++;
        }
 
        return false;
    }
     
 
    // Driver Method
    public static void Main()
    {
         
        String num1 = "1023";
         
        // checking number1
        if( check_duck(num1))
            Console.Write("It is a "
                      + "duck number");
        else
            Console.Write("It is not "
                    + "a duck number");
    }
}
 
// This code is contributed by
// nitin mittal.

Javascript




<script>
 
// Javascript program to check whether
// a number is Duck Number or not.
 
// Function to check whether
// given number is duck number or not.
function check_duck(num)
{
     
    // Ignore leading 0s
    let i = 0, n = num.length;
    while (i < n && num[i] == '0')
        i++;
 
    // Check remaining digits
    while (i < n)
    {
        if (num[i] == '0')
            return true;
             
        i++;
    }
    return false;
}
 
// Driver code
let num = "1023";
 
if (check_duck(num))
    document.write("It is a duck number");
else
    document.write("It is not a duck number");
     
// This code is contributed by rishavmahato348
 
</script>

Output

It is a duck number

Time Complexity: O(n) where n is length of string.
Auxiliary Space: O(1)

Approach 2:String manipulation

  1. Take the input number as an integer n.
  2. Convert the integer n to a string s using the to_string function in C++.
  3. Find the length of the string s and initialize a boolean variable hasZero to false.
  4. Iterate over the characters of the string s starting from the second character (i.e., the first non-zero digit) to the end of the string.
  5. If any character is equal to ‘0’, set hasZero to true and break out of the loop.
  6. Check if the first character of the string s is not equal to ‘0’.
  7. If both conditions in steps 4 and 5 are satisfied, return true (i.e., the number is a Duck Number); otherwise, return false (i.e., the number is not a Duck Number).

C++




#include <iostream>
#include <string>
using namespace std;
 
bool isDuckNumber(int n) {
    string s = to_string(n);
    int len = s.length();
    bool hasZero = false;
    for (int i = 1; i < len; i++) {
        if (s[i] == '0') {
            hasZero = true;
            break;
        }
    }
    return (hasZero && s[0] != '0');
}
 
int main() {
    int n = 1023;
    if (isDuckNumber(n)) {
        cout << "It is a Duck Number" << endl;
    } else {
        cout << "It is not a Duck Number" << endl;
    }
    return 0;
}

Java




import java.util.*;
 
public class Main {
  public static boolean isDuckNumber(int n) {
    String s = Integer.toString(n);
    int len = s.length();
    boolean hasZero = false;
    for (int i = 1; i < len; i++) {
      if (s.charAt(i) == '0') {
        hasZero = true;
        break;
      }
    }
    return (hasZero && s.charAt(0) != '0');
  }
  public static void main(String[] args) {
    int n = 1023;
    if (isDuckNumber(n)) {
      System.out.println("It is a Duck Number");
    } else {
      System.out.println("It is not a Duck Number");
    }
  }
 
}

Python3




def isDuckNumber(n):
    s = str(n)
    len_s = len(s)
    hasZero = False
    for i in range(1, len_s):
        if s[i] == '0':
            hasZero = True
            break
    return (hasZero and s[0] != '0')
 
if __name__ == '__main__':
    n = 1023
    if isDuckNumber(n):
        print("It is a Duck Number")
    else:
        print("It is not a Duck Number")

Time Complexity: O(n) 
Auxiliary Space: O(n)

The time complexity of this algorithm is O(n), where n is the number of digits in the input integer. This is because we need to iterate over all the digits in the integer to check if there is a zero after the first non-zero digit.

The space complexity of this algorithm is also O(n), because we need to store the string representation of the input integer. The length of this string is equal to the number of digits in the integer, which is at most log10(n) + 1.

In general, string manipulation algorithms have higher space complexity compared to their integer-based counterparts because they require additional space to store the string representation of the input. However, they can sometimes be more intuitive to understand and implement.

This article is contributed by Nikita Tiwari. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. 


My Personal Notes arrow_drop_up
Last Updated : 29 Apr, 2023
Like Article
Save Article
Similar Reads
Related Tutorials