రెండు వెర్షన్ సంఖ్యలను సరిపోల్చండి


కఠినత స్థాయి సులువు
తరచుగా అడుగుతుంది Adobe Delhivery GE హెల్త్ గ్రేఆరెంజ్ MakeMyTrip వూకర్ జోహో
సరళి శోధన స్ట్రింగ్

సమస్యల నివేదిక

సంస్కరణ సంఖ్యల రూపంలో ఉన్న రెండు ఇన్పుట్ తీగలను ఇచ్చారు. సంస్కరణ సంఖ్య abcd లాగా కనిపిస్తుంది, ఇక్కడ a, b, c, d పూర్ణాంకాలు. కాబట్టి, సంస్కరణ సంఖ్య స్ట్రింగ్, దీనిలో సంఖ్యలను చుక్కల ద్వారా వేరు చేస్తారు. మేము రెండు తీగలను (సంస్కరణ సంఖ్యలు) పోల్చి, తాజా వెర్షన్ (చిన్న వెర్షన్ సంఖ్య) ను తిరిగి ఇవ్వాలి.

ఇన్‌పుట్ ఫార్మాట్

మొదటి పంక్తి a స్ట్రింగ్ మొదటి సంస్కరణను సూచించే “లు”.

రెండవ సంస్కరణను సూచించే స్ట్రింగ్ “టి” ఉన్న రెండవ పంక్తి.

అవుట్పుట్ ఫార్మాట్

“S” చిన్న వెర్షన్ సంఖ్య అయితే “వెర్షన్ 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

రెండు వెర్షన్ సంఖ్యలను పోల్చడానికి సంక్లిష్టత విశ్లేషణ

సమయం సంక్లిష్టత

పై) (ఇక్కడ n “s” లేదా “t” స్ట్రింగ్ యొక్క పొడవు ఇతరులకు సంబంధించి ఎక్కువ.

అంతరిక్ష సంక్లిష్టత

O (1) ఎందుకంటే మేము ఇక్కడ ఏ సహాయక స్థలాన్ని ఉపయోగించము.