განსაზღვრავს IP მისამართი Leetcode Solution


Რთული ტური Easy
ხშირად ეკითხებიან Amazon
სიმებიანი StringBuffer

პრობლემის განცხადება

ამ პრობლემის დროს, ჩვენ გვაძლევენ IP მისამართს. ჩვენ უბრალოდ უნდა გადავაკეთოთ Defanged IP მისამართად, ანუ ჩვენს გამომავალ სტრიქონში, ყველა "." გარდაიქმნება "[.]" - ში.

განსაზღვრავს IP მისამართი Leetcode Solution

მაგალითი

# 1:

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

# 2:

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

მიდგომა 1 (სიმებიანი ნაკადის / აღმაშენებლის გამოყენება)

ამ პრობლემისთვის შეგვიძლია გამოვიყენოთ მარტივი სტრიქონის ნაკადი ან მშენებელი კლასი მოცემული სტრიქონის შესაცვლელად.
შეგვიძლია გამოვიყენოთ ა სიმების მშენებელი (java შემთხვევაში) და სიმების ნაკადის (C ++ შემთხვევაში) მოცემული სტრიქონის გამომავალი სტრიქონის გადასაყვანად.
ჩვენ გადავკვეთთ შეყვანის სტრიქონს მარცხნიდან მარჯვნივ. თუ რომელიმე პერსონაჟი არის "." შემდეგ, ჩვენ დავამატებთ "[.]" გამომავალ სტრიქონს. წინააღმდეგ შემთხვევაში, ჩვენ ასევე დავამატებთ სიმბოლოს გამომავალ სტრიქონში.

ალგორითმი

  • შექმენით ცარიელი სიმების სტრიმი ან მშენებელი.
  • გაუშვით მარყუჟი for მოცემული სტრიქონის თითოეული პერსონაჟის გადასალახად.
  • სიმების თითოეული სიმბოლოსთვის. თუ ხასიათი არის ”. შემდეგ დაამატეთ სტრიქონების მშენებელი "[.]". იმავე სიმბოლოს დაამატეთ სიმების შემქმნელი.
  • გადაიყვანეთ ნაკადი / მშენებელი სიმებად და დააბრუნეთ იგი.

განხორციელება IP მისამართის Leetcode Solution- ის განსაზღვრისთვის

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

ჯავა პროგრამა

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 ამოხსნის განსაზღვრისთვის

დროის სირთულე

O (n): ჩვენ მოცემულ სტრიქონს ხაზოვნად ვათვალიერებთ, ასე რომ, ეს არის O (n).

სივრცის სირთულე 

O (n): Java შემთხვევაში ჩვენ გამოვიყენეთ სტრიქონების შემქმნელი, რომელიც ხაზოვანი ზედმეტი სივრცეა და C ++ შემთხვევაში გამოვიყენეთ სტრიქონის ნაკადი, ამიტომ სივრცის სირთულე არის O (n).

მიდგომა 2 (ჩამონტაჟებული ფუნქციის გამოყენება)

ჩვენ გამოვიყენებთ regex შეცვლის ფუნქციას C ++– ში და ჩავაცვლით ყველა ფუნქციას java– ში:

ჩვენ შეგვიძლია გამოვიყენოთ C ++ - ის regex_replace ფუნქცია, რომ შეცვალოთ ყველა „.“ "[.]" - მდე.
ასევე, java– ს შემთხვევაში, შეგვიძლია გამოვიყენოთ ჩანაცვლება All () ფუნქცია, ყველა „–ს“ შესაცვლელად. "[.]" - მდე.

განხორციელება IP მისამართის Leetcode Solution- ის განსაზღვრისთვის

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

ჯავა პროგრამა

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 ამოხსნის განსაზღვრისთვის

დროის სირთულე

დროის სირთულე დამოკიდებული იქნება წინასწარ განსაზღვრული ფუნქციების შიდა განხორციელებაზე.

სივრცის სირთულე 

სივრცის სირთულე ასევე დამოკიდებული იქნება წინასწარ განსაზღვრული ფუნქციების შიდა განხორციელებაზე.