Рубрики

Сравните два номера версий

Номер версии — это строка, которая используется для идентификации уникальных состояний программного продукта. Номер версии выглядит как abcd, где a, b и т. Д. Являются номерами, поэтому номер версии — это строка, в которой номера разделены точками. Эти числа обычно представляют иерархию от мажорной до минорной (а является мажорным, а d — второстепенным).
В этой задаче нам даны два номера версий, нам нужно сравнить их и сделать вывод, какой из них является поздним номером версии (то есть какой номер версии меньше).

For example if
V1 = “1.0.31”
V2 = “1.0.27”
Then V2 version is latest (or smaller) 
because V2 < V1

Невозможно сравнить их напрямую из-за точки, но мы можем сравнить их численно, а затем проверить, какая версия является последней. В приведенном ниже коде реализован такой метод, который перебирает строки, разделяет числовую часть и сравнивает их, если они равны, переходят к следующей числовой части и т. Д., Пока они не различаются, в противном случае помечают их как равные.
В приведенном ниже коде реализован метод для сравнения двух версий. Если у нас более двух версий, то нижеприведенный метод versionCompare можно использовать как метод cmp метода sort, который будет сортировать все версии в соответствии с заданным сравнением.

C / C ++

// C / C ++ программа для сравнения двух версий
#include <bits/stdc++.h>

using namespace std;

  
// Метод для сравнения двух версий. Возвращает 1, если v2
// меньше, -1 если v1 меньше, 0 если равно

int versionCompare(string v1, string v2)

{

    // vnum хранит каждую числовую часть версии

    int vnum1 = 0, vnum2 = 0;

  

    // цикл до тех пор, пока обе строки не будут обработаны

    for (int i=0,j=0; (i<v1.length() || j<v2.length()); )

    {

        // сохраняем числовую часть версии 1 в vnum1

        while (i < v1.length() && v1[i] != '.')

        {

            vnum1 = vnum1 * 10 + (v1[i] - '0');

            i++;

        }

  

        // сохраняем числовую часть версии 2 в vnum2

        while (j < v2.length() && v2[j] != '.')

        {

            vnum2 = vnum2 * 10 + (v2[j] - '0');

            j++;

        }

  

        if (vnum1 > vnum2)

            return 1;

        if (vnum2 > vnum1)

            return -1;

  

        // если равно, сбрасываем переменные и переходим к следующему числу

        // часть

        vnum1 = vnum2 = 0;

        i++;

        j++;

    }

    return 0;

}

  
// Метод драйвера для проверки вышеуказанной функции сравнения

int main()

{

    string version1 = "1.0.3";

    string version2 = "1.0.7";

  

    if (versionCompare(version1, version2) < 0)

        cout << version1 << " is smaller\n";

    else if (versionCompare(version1, version2) > 0)

        cout << version2 << " is smaller\n";

    else

        cout << "Both version are equal\n";

    return 0;

}

питон

# Программа Python для сравнения двух номеров версий

  
# Способ сравнения двух версий.
# Вернуть 1, если v2 меньше,
# -1, если v1 меньше ,,
# 0, если равно

def versionCompare(v1, v2):

      

    # Это разделит обе версии на '.'

    arr1 = v1.split(".")

    arr2 = v2.split(".")

  

    # Инициализатор для массивов версий

    i = 0 

      

    # Мы приняли во внимание, что оба

    # версии будут содержать одинаковое количество разделителей

    while(i < len(arr1)):

          

        # Версия 2 больше версии 1

        if int(arr2[i]) > int(arr1[i]):

            return -1

          

        # Версия 1 больше версии 2

        if int(arr1[i]) > int(arr2[i]):

            return 1

  

        # Мы не можем сделать вывод до сих пор

        i += 1

          

    # Обе версии равны

    return 0

  
# Драйвер программы для проверки выше функции сравнения

version1 = "1.0.3"

version2 = "1.0.7"

  

ans =  versionCompare(version1, version2)

if ans < 0:

    print version1 + " is smaller"

elif ans > 0:

    print version2 + " is smaller"

else:

    print "Both versions are equal"

  
# Этот код предоставлен Nikhil Kumar Singh (nickzuck_007)


Выход:

1.0.3 is smaller

Эта статья предоставлена Уткаршем Триведи . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Сравните два номера версий

0.00 (0%) 0 votes