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