İki versiya nömrələrini müqayisə edin

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Çiy kərpic Çatdırılma GE Healthcare Boz Portağal MakeMyTrip Vuker Zoho
Nümunə axtarışı SimBaxılıb 324

Problem bəyanat

Versiya nömrələri şəklində olan iki giriş sətri verilmişdir. Versiya nömrəsi abcd kimi görünür, burada a, b, c, d tam ədəddir. Buna görə versiya nömrəsi nömrələrin nöqtələrlə ayrıldığı bir sətirdir. İki simli (versiya nömrələri) müqayisə etməliyik və son versiyası olan (daha kiçik versiya nömrəsi) qayıtmalıyıq.

Giriş Formatı

A olan ilk sətir sim İlk versiyanı təmsil edən "s".

İkinci versiyanı təmsil edən “t” simli olan ikinci sətir.

Çıxış formatı

"S" olduqda "Version1" ehtiva edən ilk və yalnız bir sətir, "Version2" ehtiva edən daha kiçik versiya nömrəsidir. Hər iki versiya bərabərdirsə, “Hər ikisini” də çap edin.

misal

7.0.1.23
7.0.1.17
Version2

Explanation: Burada Versiya1-də a, b, c, d-nin dəyəri 7, 0, 1, 23-dir. Versiya2-də a, b, c, d-nin dəyəri 7, 0, 1, 17-dir. Versiya2 sonuncudur (kiçikdir ). Budur, çap edirik Version2 cavabımızda.

Alqoritm

1. Hər iki giriş sətrini keçin

2. Dəyərləri '' əvvəl saxla. ' v1 və v2-də.

3. V1 və v2 ilə müqayisə edin.

4. V1 <v2 olarsa, -1 və ya v1> v2 olarsa 1 qaytarır.

5. Başqa bir halda, qayıt. Bunu iplərin sonuna qədər et.

Həyata keçirilməsi

İki versiya nömrəsini müqayisə etmək üçün C ++ proqramı

#include <bits/stdc++.h>
using namespace std;
 
int CompareVersions(string version1, string version2)
{
    for (int i=0,j=0; (i<version1.length() || j<version2.length()); )
    {
        int v1 = 0, v2 = 0;
        while (i < version1.length() && version1[i] != '.')
        {
            v1 = v1 * 10 + (version1[i] - '0');
            i++;
        }
        while (j < version2.length() && version2[j] != '.')
        {
            v2 = v2 * 10 + (version2[j] - '0');
            j++;
        }
        if (v1 > v2)
        {
            return 1;
        }
        if (v2 > v1)
        {
            return -1;
        }
        i++;
        j++;
    }
    return 0;
}
 
int main()
{
    string s,t; 
    cin>>s>>t;
    if(CompareVersions(s, t) == -1)
    {
        cout<<"Version1"<<endl;
    }
    else if(CompareVersions(s, t) == 1)
    {
        cout<<"Version2"<<endl;
    }
    else
    {
        cout<<"Both"<<endl;
    }
    return 0;
}

İki Versiya Nömrələrini Müqayisə etmək üçün Java Proqramı

import java.util.Arrays;
import java.util.Scanner;

class sum
{ 
        public static int CompareVersions(String version1, String version2)
        {
            for (int i=0,j=0; (i<version1.length() || j<version2.length()); )
            {
                int v1 = 0, v2 = 0;
                while (i < version1.length() && version1.charAt(i) != '.')
                {
                    v1 = v1 * 10 + (version1.charAt(i) - '0');
                    i++;
                }
                while (j < version2.length() && version2.charAt(j) != '.')
                {
                    v2 = v2 * 10 + (version2.charAt(j) - '0');
                    j++;
                }
                if (v1 > v2)
                {
                    return 1;
                }
                if (v2 > v1)
                {
                    return -1;
                }
                i++;
                j++;
            }
            return 0;
        }
  public static void main(String[] args) 
  { 
    Scanner sr = new Scanner(System.in); 
                String s = sr.next();
                String t = sr.next();
                if(CompareVersions(s, t) == -1)
                {
                    System.out.println("Version1");
                }
                else if(CompareVersions(s, t) == 1)
                {
                    System.out.println("Version2");
                }
                else
                {
                    System.out.println("Both");
                }
  } 
} 
152.101.31.144
152.101.31.144
Both

İki Versiya Nömrələrini Müqayisə etmək üçün Mürəkkəblik Təhlili

Zamanın mürəkkəbliyi

O (n) hara n başqalarına nisbətən daha çox olan "s" və ya "t" simli uzunluğudur.

Kosmik Mürəkkəblik

O (1) çünki burada heç bir köməkçi yerdən istifadə etmirik.

Translate »