Programming Question Find Number in Continuous
Consecutive sequenced numbers in a string
Given a string that contains only numeric digits, we need to check whether that strings contains numbers in consecutive sequential manner in increasing order.
Note: Negative numbers are not considered part of this problem. So we consider that input only contains positive integer.
Examples:
Input : str = "1234" Output : Yes 1 Explanation : There are 1, 2, 3, 4 which are consecutive and in increasing order. And the starting number is 1 Input : str = "91012" Output : No Explanation : There are no such sequence in the string. Input : str = "99100" Output : Yes 99 Explanation : The consecutive sequential numbers are 99, 100 Input : str = "010203" Output : NO Explanation : Although at first glance there seems to be 01, 02, 03. But those wouldn't be considered a number. 01 is not 1 it's 0, 1
Approach: An easily implementable and useful approach is to start taking one character at first (assuming that our string start with 1 digit number) and then form a new string by concatenating the next number until the length of new string is equal to original string.
Perhaps an example may clarify :
Lets take string "99100"
Implementation:
C++
#include <iostream>
using namespace std;
int isConsecutive(string str)
{
int start;
int length = str.size();
for ( int i = 0; i < length / 2; i++) {
string new_str = str.substr(0, i + 1);
int num = atoi (new_str.c_str());
start = num;
while (new_str.size() < length) {
num++;
new_str = new_str + to_string(num);
}
if (new_str == str)
return start;
}
return -1;
}
int main()
{
string str = "99100" ;
cout << "String: " << str << endl;
int start = isConsecutive(str);
if (start != -1)
cout << "Yes \n" << start << endl;
else
cout << "No" << endl;
string str1 = "121315" ;
cout << "\nString: " << str1 << endl;
start = isConsecutive(str1);
if (start != -1)
cout << "Yes \n" << start << endl;
else
cout << "No" << endl;
return 0;
}
Java
class GFG
{
static int isConsecutive(String str)
{
int start;
int length = str.length();
for ( int i = 0 ; i < length / 2 ; i++)
{
String new_str = str.substring( 0 , i + 1 );
int num = Integer.parseInt(new_str);
start = num;
while (new_str.length() < length)
{
num++;
new_str = new_str + String.valueOf(num);
}
if (new_str.equals(str))
return start;
}
return - 1 ;
}
public static void main(String[] args)
{
String str = "99100" ;
System.out.println( "String: " + str);
int start = isConsecutive(str);
if (start != - 1 )
System.out.println( "Yes \n" + start);
else
System.out.println( "No" );
String str1 = "121315" ;
System.out.println( "\nString: " + str1);
start = isConsecutive(str1);
if (start != - 1 )
System.out.println( "Yes \n" + start);
else
System.out.println( "No" );
}
}
Python3
def isConsecutive(strs):
start = 0 ;
length = len (strs);
for i in range (length / / 2 ):
new_str = strs[ 0 : i + 1 ];
num = int (new_str);
start = num;
while ( len (new_str) < length):
num + = 1 ;
new_str = new_str + str (num);
if (new_str = = (strs)):
return start;
return - 1 ;
if __name__ = = '__main__' :
str0 = "99100" ;
print ( "String: " + str0);
start = isConsecutive(str0);
if (start ! = - 1 ):
print ( "Yes \n" , start);
else :
print ( "No" );
str1 = "121315" ;
print ( "\nString: " , str1);
start = isConsecutive(str1);
if (start ! = - 1 ):
print ( "Yes \n" , start);
else :
print ( "No" );
C#
using System;
class GFG
{
static int isConsecutive(String str)
{
int start;
int length = str.Length;
for ( int i = 0; i < length / 2; i++)
{
String new_str = str.Substring(0, i + 1);
int num = int .Parse(new_str);
start = num;
while (new_str.Length < length)
{
num++;
new_str = new_str + String.Join( "" ,num);
}
if (new_str.Equals(str))
return start;
}
return -1;
}
public static void Main(String[] args)
{
String str = "99100" ;
Console.WriteLine( "String: " + str);
int start = isConsecutive(str);
if (start != -1)
Console.WriteLine( "Yes \n" + start);
else
Console.WriteLine( "No" );
String str1 = "121315" ;
Console.WriteLine( "\nString: " + str1);
start = isConsecutive(str1);
if (start != -1)
Console.WriteLine( "Yes \n" + start);
else
Console.WriteLine( "No" );
}
}
Javascript
<script>
function isConsecutive(str)
{
let start;
let length = str.length;
for (let i = 0; i < length / 2; i++)
{
let new_str = str.substring(0, i + 1);
let num = parseInt(new_str);
start = num;
while (new_str.length < length)
{
num++;
new_str = new_str + (num).toString();
}
if (new_str == (str))
return start;
}
return -1;
}
let str = "99100" ;
document.write( "String: " + str+ "<br>" );
let start = isConsecutive(str);
if (start != -1)
document.write( "Yes <br>" + start+ "<br>" );
else
document.write( "No<br>" );
let str1 = "121315" ;
document.write( "<br>String: " + str1+ "<br>" );
start = isConsecutive(str1);
if (start != -1)
document.write( "Yes <br>" + start+ "<br>" );
else
document.write( "No<br>" );
</script>
Output:
String: 99100 Yes 99 String: 121315 No
Source: https://www.geeksforgeeks.org/consecutive-sequenced-numbers-in-a-string/
0 Response to "Programming Question Find Number in Continuous"
Post a Comment