Найдите число наибольшей длины в строке

Опубликовано: 5 Марта, 2022

Дана строка цифр и символов. Напишите программу для поиска числа с максимальным количеством цифр в строке.
Примечание . Число не может быть наибольшим числом в строке. Например, если строка - «a123bc321», тогда ответ может быть 123 или 321, поскольку проблема состоит в том, чтобы найти число с самой длинной длиной, а не с самым большим значением.
Примеры:

 Ввод: geeks100for1234geeks
Выход: 1234

Ввод: abx12321bst1234yz
Выход: 12321

Рекомендуется: сначала попробуйте свой подход в {IDE}, прежде чем переходить к решению.

Approach: The idea is to traverse the string and if a digit is encountered, store its position and from that position traverse further until a character occurs. Every time a continuous series of a digit is encountered, store its length and match it with the length previously find series of a digit to find out the maximum of all the continuous series of digits.
Below is the implementation of above approach. 
 

C++

// C++ code for finding the longest
// length integer
#include <iostream>
using namespace std;
 
string longestInteger(string str, int l)
{
    int count = 0, max = 0, pos = -1, pre_pos, pre_len, len = 0;
    // Traverse the string
    for (int i = 0; i < l; i++) {
        // Store the previous position and previous length
        // of the digits encountered.
        pre_pos = pos;
        pre_len = len;
        count = 0;
        len = 0;
 
        // If first digit occurs, store its position in pos
        if (isdigit(str[i]))
            pos = i;
 
        // Traverse the string till a character occurs.
        while (isdigit(str[i])) {
            count++;
            i++;
            len++;
        }
 
        // Check if the length of the string is
        // greater than the previous ones or not.
        if (count > max) {
            max = count;
        }
        else {
            pos = pre_pos;
            len = pre_len;
        }
    }
    return (str.substr(pos, len));
}
 
// Driver code
int main()
{
    string str = "geeks100for1234geeks";
    int l = str.length();
    cout << longestInteger(str, l);
    return 0;
}

Java

// Java code for finding the
// longest length integer
import java.io.*;
import java.util.*;
import java.lang.*;
 
class GFG
{
static String longestInteger(String str, int l)
{
    int count = 0, max = 0,
        pos = -1, pre_pos,
        pre_len, len = 0;
     
    // Traverse the string
    for (int i = 0; i < l; i++)
    {
        // Store the previous position
        // and previous length of the
        // digits encountered.
        pre_pos = pos;
        pre_len = len;
        count = 0;
        len = 0;
 
        // If first digit occurs,
        // store its position in pos
        if (Character.isDigit(str.charAt(i)))
            pos = i;
 
        // Traverse the string
        // till a character occurs.
        while (Character.isDigit(str.charAt(i)))
        {
            count++;
            i++;
            len++;
        }
 
        // Check if the length of
        // the string is greater
        // than the previous ones
        // or not.
        if (count > max)
        {
            max = count;
        }
        else
        {
            pos = pre_pos;
            len = pre_len;
        }
    }
    return (str.substring(pos, pos + len));
}
 
// Driver code
public static void main(String[] args)
{
    String str = "geeks100for1234geeks";
    int l = str.length();
    System.out.print(longestInteger(str, l));
}
}

C#

// C# code for finding the
// longest length integer
using System;
 
class GFG
{
static string longestInteger(string str,
                             int l)
{
    int count = 0, max = 0,
        pos = -1, pre_pos,
        pre_len, len = 0;
     
    // Traverse the string
    for (int i = 0; i < l; i++)
    {
        // Store the previous position
        // and previous length of the
        // digits encountered.
        pre_pos = pos;
        pre_len = len;
        count = 0;
        len = 0;
 
        // If first digit occurs,
        // store its position in pos
        if (Char.IsDigit(str[i]))
            pos = i;
 
        // Traverse the string
        // till a character occurs.
        while (Char.IsDigit(str[i]))
        {
            count++;
            i++;
            len++;
        }
 
        // Check if the length of
        // the string is greater
        // than the previous ones
        // or not.
        if (count > max)
        {
            max = count;
        }
        else
        {
            pos = pre_pos;
            len = pre_len;
        }
    }
    return (str.Substring(pos, len));
}
 
// Driver code
public static void Main()
{
    string str = "geeks100for1234geeks";
    int l = str.Length;
    Console.Write(longestInteger(str, l));
}
}
 
// This code is contributed
// by ChitraNayal

Python 3

# Python 3 code for finding the
# longest length integer
 
def longestInteger(s, length):
    count = 0
    maximum = 0
    pos = -1
    l = 0
     
    # Traverse the string
    for i in range(length):
         
        # Store the previous position
        # and previous length of
        # the digits encountered.
        pre_pos = pos
        pre_len = l
        count = 0
        l = 0
 
        # If first digit occurs,
        # store its position in pos
        if (s[i].isdecimal()):
            pos = i
 
        # Traverse the string
        # till a character occurs.
        while (s[i].isdecimal()):
            count += 1
            i += 1
            l += 1
 
        # Check if the length of
        # the string is greater
        # than the previous ones
        # or not.
        if (count > maximum):
            maximum = count
         
        else:
            pos = pre_pos
            l = pre_len
 
    return (s[pos: pos + l])
 
# Driver code
s = "geeks100for1234geeks"
length = len(s)
print(longestInteger(s, length))
 
# This code is contributed
# by ChitraNayal

PHP

<?php
// PHP code for finding the
// longest length integer
 
function longestInteger($str, $l)
{
    $count = 0;
    $max = 0;
    $pos = -1;
    $pre_pos = 0;
    $pre_len = 0;
    $len = 0;
     
    // Traverse the string
    for ($i = 0; $i < $l; $i++)
    {
        // Store the previous position
        // and previous length of
        // the digits encountered.
        $pre_pos = $pos;
        $pre_len = $len;
        $count = 0;
        $len = 0;
 
        // If first digit occurs,
        // store its position in pos
        if (is_numeric($str[$i]))
            $pos = $i;
 
        // Traverse the string till
        // a character occurs.
        while (is_numeric($str[$i]))
        {
            $count++;
            $i++;
            $len++;
        }
 
        // Check if the length of
        // the string is greater
        // than the previous ones
        // or not.
        if ($count > $max)
        {
            $max = $count;
        }
        else
        {
            $pos = $pre_pos;
            $len = $pre_len;
        }
    }
    return (substr($str, $pos, $len));
}
 
// Driver code
$str = "geeks100for1234geeks";
$l = strlen($str);
echo longestInteger($str, $l);
 
// This code is contributed
// by ChitraNayal
?>

Javascript

<script>
// Javascript code for finding the
// longest length integer
     
    function longestInteger(str,l)
    {
        let count = 0, max = 0,
        pos = -1, pre_pos,
        pre_len, len = 0;
       
    // Traverse the string
    for (let i = 0; i < l; i++)
    {
        // Store the previous position
        // and previous length of the
        // digits encountered.
        pre_pos = pos;
        pre_len = len;
        count = 0;
        len = 0;
   
        // If first digit occurs,
        // store its position in pos
        if (!isNaN(String(str[i]) * 1))
            pos = i;
   
        // Traverse the string
        // till a character occurs.
        while (!isNaN(String(str[i]) * 1))
        {
            count++;
            i++;
            len++;
        }
   
        // Check if the length of
        // the string is greater
        // than the previous ones
        // or not.
        if (count > max)
        {
            max = count;
        }
        else
        {
            pos = pre_pos;
            len = pre_len;
        }
    }
    return (str.substring(pos, pos + len));
    }
     
    // Driver code
    let str = "geeks100for1234geeks";
    let l = str.length;
    document.write(longestInteger(str, l));
     
 
// This code is contributed by rag2127
</script>
Output: 
1234

 

Сложность времени: O (n)
Вспомогательная космическая сложность: O (1)

Хотите учиться на лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для языка и STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .