Check if a number has digits in the given Order
Given a number N. The task is to check if the digits of the number follow any of the below order:
- The digits are in strictly increasing order.
- Or, the digits are in strictly decreasing order.
- Or, the digits follow strictly increasing order first and then strictly decreasing.
If the number follows any of the above order then print YES otherwise print NO.
Examples:
Input : N = 415
Output : NO
Input : N = 123454321
Output : YES
Traverse the number from right to left by extracting each digit one by one. Keep a pointer to tell that whether the current sequence is descending or ascending sequence, -1 denotes strictly ascending and 1 denotes strictly descending sequence. At first the sequence should be strictly increasing as we are going from right to left. As we encounter a digit which is lesser than the previous digit, change the flag to decreasing(i.e -1) and while in increasing order we get any digit which is equal to the previous digit we directly print NO.
Below is the implementation of the above approach:
C++
#include<bits/stdc++.h>
using namespace std;
bool isCorrectOrder( int n)
{
bool flag = true ;
int prev = -1;
int type = -1;
while (n != 0)
{
if (type ==-1)
{
if (prev ==-1)
{
prev = n % 10;
n = n/10;
continue ;
}
if (prev == n % 10)
{
flag = false ;
break ;
}
if (prev > n % 10)
{
type = 1;
prev = n % 10;
n = n/10;
continue ;
}
prev = n % 10;
n = n / 10;
}
else
{
if (prev == n % 10)
{
flag = false ;
break ;
}
if (prev < n % 10)
{
flag = false ;
break ;
}
prev = n % 10;
n = n / 10;
}
}
return flag;
}
int main()
{
int n = 123454321;
if (isCorrectOrder(n))
cout<< "YES" ;
else
cout<< "NO" ;
return 0;
}
|
Java
import java.io.*;
class GFG {
static boolean isCorrectOrder( int n)
{
boolean flag = true ;
int prev = - 1 ;
int type = - 1 ;
while (n != 0 )
{
if (type ==- 1 )
{
if (prev ==- 1 )
{
prev = n % 10 ;
n = n/ 10 ;
continue ;
}
if (prev == n % 10 )
{
flag = false ;
break ;
}
if (prev > n % 10 )
{
type = 1 ;
prev = n % 10 ;
n = n/ 10 ;
continue ;
}
prev = n % 10 ;
n = n / 10 ;
}
else
{
if (prev == n % 10 )
{
flag = false ;
break ;
}
if (prev < n % 10 )
{
flag = false ;
break ;
}
prev = n % 10 ;
n = n / 10 ;
}
}
return flag;
}
public static void main (String[] args) {
int n = 123454321 ;
if (isCorrectOrder(n))
System.out.println( "YES" );
else
System.out.println( "NO" );
}
}
|
Python3
def isCorrectOrder(n):
flag = True ;
prev = - 1 ;
type = - 1 ;
while (n ! = 0 ):
if ( type = = - 1 ):
if (prev = = - 1 ):
prev = n % 10 ;
n = int (n / 10 );
continue ;
if (prev = = n % 10 ):
flag = False ;
break ;
if (prev > n % 10 ):
type = 1 ;
prev = n % 10 ;
n = int (n / 10 );
continue ;
prev = n % 10 ;
n = int (n / 10 );
else :
if (prev = = n % 10 ):
flag = False ;
break ;
if (prev < n % 10 ):
flag = False ;
break ;
prev = n % 10 ;
n = int (n / 10 );
return flag;
n = 123454321 ;
if (isCorrectOrder(n)):
print ( "YES" );
else :
print ( "NO" );
|
C#
using System;
class GFG
{
static bool isCorrectOrder( int n)
{
bool flag = true ;
int prev = -1;
int type = -1;
while (n != 0)
{
if (type == -1)
{
if (prev == -1)
{
prev = n % 10;
n = n / 10;
continue ;
}
if (prev == n % 10)
{
flag = false ;
break ;
}
if (prev > n % 10)
{
type = 1;
prev = n % 10;
n = n / 10;
continue ;
}
prev = n % 10;
n = n / 10;
}
else
{
if (prev == n % 10)
{
flag = false ;
break ;
}
if (prev < n % 10)
{
flag = false ;
break ;
}
prev = n % 10;
n = n / 10;
}
}
return flag;
}
public static void Main ()
{
int n = 123454321;
if (isCorrectOrder(n))
Console.WriteLine( "YES" );
else
Console.WriteLine( "NO" );
}
}
|
PHP
<?php
function isCorrectOrder( $n )
{
$flag = true;
$prev = -1;
$type = -1;
while ( $n != 0)
{
if ( $type ==-1)
{
if ( $prev ==-1)
{
$prev = $n % 10;
$n = (int) $n / 10;
continue ;
}
if ( $prev == $n % 10)
{
$flag = false;
break ;
}
if ( $prev > $n % 10)
{
$type = 1;
$prev = $n % 10;
$n = (int) $n / 10;
continue ;
}
$prev = $n % 10;
$n = (int) $n / 10;
}
else
{
if ( $prev == $n % 10)
{
$flag = false;
break ;
}
if ( $prev < $n % 10)
{
$flag = false;
break ;
}
$prev = $n % 10;
$n = (int) $n / 10;
}
}
return $flag ;
}
$n = 123454321;
if (isCorrectOrder( $n ))
echo "YES" ;
else
echo "NO" ;
?>
|
Javascript
<script>
function isCorrectOrder(n)
{
let flag = true ;
let prev = -1;
let type = -1;
while (n != 0)
{
if (type ===-1)
{
if (prev ===-1)
{
prev = n % 10;
n = Math.floor(n/10);
continue ;
}
if (prev == n % 10)
{
flag = false ;
break ;
}
if (prev > n % 10)
{
type = 1;
prev = n % 10;
n = Math.floor(n/10);
continue ;
}
prev = n % 10;
n = Math.floor(n / 10);
}
else
{
if (prev == n % 10)
{
flag = false ;
break ;
}
if (prev < n % 10)
{
flag = false ;
break ;
}
prev = n % 10;
n = Math.floor(n / 10);
}
}
return flag;
}
let n = 123454321;
if (isCorrectOrder(n))
document.write( "YES" );
else
document.write( "NO" );
</script>
|
Time Complexity: O(logN)
Auxiliary Space: O(1), since no extra space has been taken.
Last Updated :
22 Aug, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...