രണ്ട് പതിപ്പ് നമ്പറുകൾ താരതമ്യം ചെയ്യുക  


വൈഷമ്യ നില എളുപ്പമായ
പതിവായി ചോദിക്കുന്നു അഡോബി ദില്ലി GE ഹെൽത്ത്കെയർ ഗ്രേ ഓറഞ്ച് MakeMyTrip വുക്കർ Zoho
പാറ്റേൺ തിരയൽ സ്ട്രിംഗ്

പ്രശ്നം പ്രസ്താവന  

പതിപ്പ് നമ്പറുകളുടെ രൂപത്തിലുള്ള രണ്ട് ഇൻപുട്ട് സ്ട്രിംഗുകൾ നൽകി. A, b, c, d പൂർണ്ണസംഖ്യകളുള്ള ഒരു പതിപ്പ് നമ്പർ abcd പോലെ കാണപ്പെടുന്നു. അതിനാൽ, സംഖ്യകളെ ഡോട്ടുകളാൽ വേർതിരിക്കുന്ന ഒരു സ്ട്രിംഗാണ് പതിപ്പ് നമ്പർ. രണ്ട് സ്ട്രിംഗുകളും (പതിപ്പ് നമ്പറുകൾ) താരതമ്യം ചെയ്ത് ഏറ്റവും പുതിയ പതിപ്പായ (ചെറിയ പതിപ്പ് നമ്പർ) മടങ്ങേണ്ടതുണ്ട്.

ഇൻപുട്ട് ഫോർമാറ്റ്  

ആദ്യ വരി a സ്ട്രിംഗ് “S” ആദ്യ പതിപ്പിനെ പ്രതിനിധീകരിക്കുന്നു.

രണ്ടാമത്തെ പതിപ്പിനെ പ്രതിനിധീകരിക്കുന്ന “t” എന്ന സ്ട്രിംഗ് അടങ്ങിയിരിക്കുന്ന രണ്ടാമത്തെ വരി.

Put ട്ട്‌പുട്ട് ഫോർമാറ്റ്  

“പതിപ്പ്” ചെറുതും വലുതുമായ പതിപ്പ് നമ്പറാണെങ്കിൽ “പതിപ്പ് 1” അടങ്ങിയിരിക്കുന്ന ആദ്യത്തേതും ഒരേയൊരു വരിയും അതിൽ “പതിപ്പ് 2” അടങ്ങിയിരിക്കുന്നു. രണ്ട് പതിപ്പും തുല്യമാണെങ്കിൽ “രണ്ടും” പ്രിന്റുചെയ്യുക.

ഉദാഹരണം  

7.0.1.23
7.0.1.17
Version2

വിശദീകരണം: പതിപ്പ് 1 ലെ a, b, c, d ന്റെ മൂല്യം 7, 0, 1, 23 ആണ്. കൂടാതെ പതിപ്പ് 2 ലെ a, b, c, d ന്റെ മൂല്യം 7, 0, 1, 17 ആണ്. പതിപ്പ് 2 ഏറ്റവും പുതിയത് (ചെറുത് ). ഇവിടെ, ഞങ്ങൾ അച്ചടിക്കുന്നു പതിപ്പ് 2 ഞങ്ങളുടെ ഉത്തരത്തിൽ.

അൽഗോരിതം  

1. രണ്ട് ഇൻപുട്ട് സ്ട്രിംഗുകളും സഞ്ചരിക്കുക

2. 'എന്നതിന് മുമ്പ് മൂല്യങ്ങൾ സംഭരിക്കുക. v1, v2 എന്നിവയിൽ.

3. V1, v2 എന്നിവ താരതമ്യം ചെയ്യുക.

4. V1 <v2 ആണെങ്കിൽ, മടങ്ങുക -1 അല്ലെങ്കിൽ v1> v2 മടങ്ങുകയാണെങ്കിൽ 1.

5. അല്ലെങ്കിൽ, മടങ്ങുക 0. സ്ട്രിംഗുകളുടെ അവസാനം വരെ ഇത് ചെയ്യുക.

നടപ്പിലാക്കൽ  

രണ്ട് പതിപ്പ് നമ്പറുകൾ താരതമ്യം ചെയ്യുന്നതിനുള്ള സി ++ പ്രോഗ്രാം

#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;
}

രണ്ട് പതിപ്പ് നമ്പറുകൾ താരതമ്യം ചെയ്യുന്നതിനുള്ള ജാവ പ്രോഗ്രാം

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

രണ്ട് പതിപ്പ് നമ്പറുകൾ താരതമ്യം ചെയ്യുന്നതിനുള്ള സങ്കീർണ്ണ വിശകലനം  

സമയ സങ്കീർണ്ണത

O (n) എവിടെ n “s” അല്ലെങ്കിൽ “t” സ്ട്രിംഗിന്റെ നീളം മറ്റുള്ളവരെ അപേക്ഷിച്ച് വലുതാണ്.

ഇതും കാണുക
ഒരു ബിഎസ്ടിയുടെ ഓരോ ആന്തരിക നോഡിനും കൃത്യമായി ഒരു കുട്ടിയുണ്ടോയെന്ന് പരിശോധിക്കുക

ബഹിരാകാശ സങ്കീർണ്ണത

O (1) കാരണം ഞങ്ങൾ ഇവിടെ ഒരു സഹായ ഇടവും ഉപയോഗിക്കുന്നില്ല.