IP հասցեի լուծման լուծում


Դժվարության մակարդակ Հեշտ
Հաճախակի հարցնում են Amazon
String StringBuffer

Խնդիրի հայտարարություն

Այս խնդրում մեզ տրվում է IP հասցե: Մենք պարզապես պետք է այն վերափոխենք Defanged IP հասցեի, այսինքն ՝ մեր ելքային տողի մեջ, բոլորը «»: վերափոխվում են «[.]» -ի:

IP հասցեի լուծման լուծում

Օրինակ

#1:

address = "1.1.1.1"
"1[.]1[.]1[.]1"

#2:

address = "255.100.50.0"
"255[.]100[.]50[.]0"

Մոտեցում 1 (օգտագործելով լարային հոսք / կառուցող)

Այս խնդրի համար մենք կարող ենք օգտագործել պարզ լարային հոսք կամ կառուցողի դաս ՝ տվյալ տողը փոփոխելու համար:
Մենք կարող ենք օգտագործել ա լարերի կառուցող (ջավայի դեպքում) և լարային հոսք (C ++ - ի դեպքում) տրված տողը վերածելու համար ելքային տողի:
Մենք անցնելու ենք տողը ձախից աջ: Եթե ​​որևէ կերպար «» է: ապա, մենք [[]] կցենք ելքային տողում: Հակառակ դեպքում մենք նույնպես նիշը կցենք ելքային տողում:

Ալգորիթմ

  • Ստեղծեք դատարկ լարային հոսք կամ կառուցող:
  • Գործարկեք մի օղակ ՝ տրված տողի յուրաքանչյուր նիշը հատելու համար:
  • Լարի յուրաքանչյուր նիշի համար: Եթե ​​բնավորությունը »: ապա «[.]» - ը կցեք լարերի կառուցողին: Ուրիշ էլ նույն նիշը կցեք լարերի կառուցողին:
  • Հոսքը / կառուցողը վերափոխեք տողի և հետ վերադարձրեք այն:

IP հասցեի Leetcode լուծման Defanging իրականացում

C ++ ծրագիր

#include <iostream>
#include <sstream>
using namespace std;
string defangIPaddr(string address) 
{
    std::stringstream ss;

    for(int i=0;i<address.length();i++){
        if(address[i]=='.'){
            ss<<"[.]";//replacing . with [.]
        }else{
            ss<<address[i];
        }
    }
    return ss.str();
}

int main()
{
    cout << defangIPaddr("1.1.1.1");
}
1[.]1[.]1[.]1

Java ծրագիր

import java.util.*;
import java.lang.*;

class Solution
{  
    public static String defangIPaddr(String address) 
    {
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<address.length();i++){
            if(address.charAt(i)=='.'){
                sb.append("[.]");
            }else{
                sb.append(address.charAt(i));
            }
        }
        return sb.toString();
    }
    
    public static void main(String args[])
    {
        System.out.println(defangIPaddr("1.1.1.1"));
    }
}
1[.]1[.]1[.]1

Բարդության վերլուծություն IP հասցեի Leetcode լուծման ուղղման համար

Timeամանակի բարդություն

Վրա) : մենք գծի վրայով անցնում ենք տրված տողը, ուստի այն O է (n):

Տիեզերական բարդություն 

Վրա) : Java- ի դեպքում մենք օգտագործել ենք լարերի կառուցող, որը գծային լրացուցիչ տարածք է, իսկ C ++ - ի դեպքում `string stream, ուստի տարածության բարդությունը O (n) է:

Մոտեցում 2 (օգտագործելով ներկառուցված գործառույթը)

Մենք կօգտագործենք regex փոխարինելու գործառույթը C ++ - ում և կփոխարինենք բոլոր գործառույթները java- ում.

Բոլորը փոխարինելու համար մենք կարող ենք օգտագործել C ++ - ի regex_replace գործառույթը: դեպի «[.]»:
Բացի այդ, java- ի դեպքում մենք կարող ենք օգտագործել փոխարինել All () գործառույթը `բոլոր« -երը »փոխարինելու համար: դեպի «[.]»:

IP հասցեի Leetcode լուծման Defanging իրականացում

C ++ ծրագիր

#include <iostream>
#include <regex>
using namespace std;
string defangIPaddr(string address) 
{
        return regex_replace(address, regex("[.]"), "[.]");
    //. is covered by [] from both sides because . itself works as pipe and will give wrong result if not used like [.] 
}

int main()
{
    cout << defangIPaddr("1.1.1.1");
}
1[.]1[.]1[.]1

Java ծրագիր

import java.util.*;
import java.lang.*;

class Solution
{  
    public static String defangIPaddr(String address) 
    {
        /*
        A period (.) has a special meaning there as does a pipe (|) as does a curly brace (}).       
        You need to escape them all using // before '.'.
        */
        return address.replaceAll("\\.","[.]");
    }
    
    public static void main(String args[])
    {
        System.out.println(defangIPaddr("1.1.1.1"));
    }
}
1[.]1[.]1[.]1

Բարդության վերլուծություն IP հասցեի Leetcode լուծման ուղղման համար

Timeամանակի բարդություն

Timeամանակի բարդությունը կախված կլինի նախապես սահմանված գործառույթների ներքին իրականացումից:

Տիեզերական բարդություն 

Տիեզերական բարդությունը կախված կլինի նաև նախապես սահմանված գործառույթների ներքին իրականացումից: