IP 주소 Leetcode 솔루션 해독


난이도 쉽게
자주 묻는 질문 아마존
StringBuffer

문제 정책

이 문제에서는 IP 주소가 주어집니다. 우리는 그것을 Defanged IP 주소로 변환하기 만하면됩니다. 즉 출력 문자열에서 모든 "." "[.]"로 변환됩니다.

IP 주소 Leetcode 솔루션 해독

# 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 솔루션의 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

자바 프로그램

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)입니다.

공간 복잡성 

의 위에) : 자바의 경우 선형 추가 공간 인 문자열 작성기를 사용했고 C ++의 경우 문자열 스트림을 사용 했으므로 공간 복잡도는 O (n)입니다.

접근법 2 (내장 함수 사용)

C ++에서 정규식 바꾸기 함수를 사용하고 자바의 모든 함수를 바꿉니다.

C ++의 regex_replace 함수를 사용하여 "."을 모두 대체 할 수 있습니다. "[.]"로.
또한 Java의 경우 replaceAll () 함수를 사용하여 "."을 모두 대체 할 수 있습니다. "[.]"로.

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

자바 프로그램

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 솔루션을 해독하기위한 복잡성 분석

시간 복잡성

시간 복잡성은 사전 정의 된 기능의 내부 구현에 따라 달라집니다.

공간 복잡성 

공간 복잡성은 사전 정의 된 기능의 내부 구현에 따라 달라집니다.