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

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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” C++

 // CPP Program to check whether a string contains // consecutive sequential numbers or not #include using namespace std;    // function to check consecutive sequential number int isConsecutive(string str) {     // variable to store starting number     int start;        // length of the input string     int length = str.size();        // find the number till half of the string     for (int i = 0; i < length / 2; i++) {            // new string containing the starting         // substring of input string         string new_str = str.substr(0, i + 1);            // converting starting substring into number         int num = atoi(new_str.c_str());            // backing up the starting number in start         start = num;            // while loop until the new_string is          // smaller than input string         while (new_str.size() < length) {                // next number             num++;                // concatenate the next number             new_str = new_str + to_string(num);         }            // check if new string becomes equal to         // input string         if (new_str == str)             return start;     }        // if string doesn't contains consecutive numbers     return -1; }    // Driver's Code 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

 // Java Program to check whether a String contains // consecutive sequential numbers or not class GFG  {    // function to check consecutive sequential number static int isConsecutive(String str) {     // variable to store starting number     int start;        // length of the input String     int length = str.length();        // find the number till half of the String     for (int i = 0; i < length / 2; i++)      {            // new String containing the starting         // substring of input String         String new_str = str.substring(0, i + 1);            // converting starting substring into number         int num = Integer.parseInt(new_str);            // backing up the starting number in start         start = num;            // while loop until the new_String is          // smaller than input String         while (new_str.length() < length)          {                // next number             num++;                // concatenate the next number             new_str = new_str + String.valueOf(num);         }            // check if new String becomes equal to         // input String         if (new_str.equals(str))          return start;     }        // if String doesn't contains consecutive numbers     return -1; }    // Driver Code 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");     } }    // This code contributed by Rajput-Ji

C#

 // C# Program to check whether a String contains // consecutive sequential numbers or not using System;    class GFG  {    // function to check consecutive sequential number static int isConsecutive(String str) {     // variable to store starting number     int start;        // length of the input String     int length = str.Length;        // find the number till half of the String     for (int i = 0; i < length / 2; i++)      {            // new String containing the starting         // substring of input String         String new_str = str.Substring(0, i + 1);            // converting starting substring into number         int num = int.Parse(new_str);            // backing up the starting number in start         start = num;            // while loop until the new_String is          // smaller than input String         while (new_str.Length < length)          {                // next number             num++;                // concatenate the next number             new_str = new_str + String.Join("",num);         }            // check if new String becomes equal to         // input String         if (new_str.Equals(str))          return start;     }        // if String doesn't contains consecutive numbers     return -1; }    // Driver Code 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");     } }    // This code has been contributed by 29AjayKumar

Output:

String: 99100
Yes
99

String: 121315
No

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : Rajput-Ji, 29AjayKumar

Article Tags :
Practice Tags :

2

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.