एक IP ठेगाना Leetcode समाधान Defanging


कठिनाई तह सजिलो
बारम्बार सोधिन्छ अमेजन
घागो StringBuffer

समस्या वक्तव्य

यस समस्यामा हामीलाई आईपी ठेगाना दिइन्छ। हामीले भर्खर यसलाई Defanged IP ठेगानामा रूपान्तरण गर्नुपर्नेछ अर्थात् हाम्रो आउटपुट स्ट्रिंगमा, सबै "।" "[।]" मा रूपान्तरण गरियो।

एक IP ठेगाना Leetcode समाधान Defanging

उदाहरणका

#1:

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

#2:

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

दृष्टिकोण १ (स्ट्रिंग स्ट्रिम / बिल्डर प्रयोग गर्दै)

यस समस्याको लागि हामी दिइएको स्ट्रिंग परिमार्जन गर्न सरल स्ट्रिंग स्ट्रिम वा बिल्डर वर्ग प्रयोग गर्न सक्दछौं।
हामी एक प्रयोग गर्न सक्छौं स्ट्रिंग बिल्डर (जाभा को मामला मा) र स्ट्रि stream स्ट्रिम (C ++ को मामला मा) दिइएको स्ट्रिंगलाई आउटपुट स्ट्रि toमा रूपान्तरण गर्न।
हामी इनपुट स्ट्रि leftलाई देब्रेदेखि दाँया ट्रान्सभर्स गर्नेछौं। यदि कुनै चरित्र छ भने। ' त्यसो भए, हामी आउटपुट स्ट्रि inमा "[।]" थप्नेछौं। अन्यथा हामी केवल आउटपुट स्ट्रि inमा पनि क्यारेक्टर थप्नेछौं।

अल्गोरिदम

  • खाली स्ट्रिंग स्ट्रिम वा बिल्डर सिर्जना गर्नुहोस्।
  • दिईएको स्ट्रि characterको प्रत्येक क्यारेक्टर लाई ट्र्याप गर्न लुपको लागि रन गर्नुहोस्।
  • स्ट्रि inमा प्रत्येक वर्णका लागि। यदि चरित्र 'हो।' त्यसपछि स्ट्रिंग बिल्डरमा "[।]" थप्नुहोस्। अन्य स्ट्रिंग बिल्डरमा समान चरित्र थप गर्नुहोस्।
  • स्ट्रिम / बिल्डरलाई स्ट्रिंगमा रूपान्तरण गर्नुहोस् र फिर्ता गर्नुहोस्।

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 समाधान Defanging को लागि जटिलता विश्लेषण

समय जटिलता

O (n): हामी दिईएको स्ट्रिar लाईनिंग लाई ट्र्याभर्स गर्दैछौं, त्यसैले यो O (n) हो।

ठाउँ जटिलता 

O (n): जाभाको मामलामा हामीले स्ट्रिंग बिल्डर प्रयोग गर्‍यौं जुन रैखिक अतिरिक्त स्पेस हो र C ++ को मामलामा हामीले स्ट्रिंग स्ट्रिम प्रयोग गर्‍यौं त्यसैले स्पेस जटिलता O (n) हो।

दृष्टिकोण २ (अन्तर्निर्मित प्रकार्य प्रयोग गरेर)

हामी C ++ मा regex प्रतिस्थापन समारोह प्रयोग गर्नेछौं र जाभा मा सबै प्रकार्य प्रतिस्थापन:

हामी सबै बदल्न C ++ को regex_replace प्रकार्य प्रयोग गर्न सक्दछौं। " "[।]" मा।
साथै, जाभा को मामला मा, हामी "सबै" प्रतिस्थापन गर्न "" रिप्लेसA सबै () प्रकार्य प्रयोग गर्न सक्छौं। "[।]" मा।

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 समाधान Defanging को लागि जटिलता विश्लेषण

समय जटिलता

समय जटिलता पूर्व परिभाषित कार्यहरूको आन्तरिक कार्यान्वयनमा निर्भर गर्दछ।

ठाउँ जटिलता 

अन्तरिक्ष जटिलता पनि पूर्व परिभाषित कार्यहरूको आन्तरिक कार्यान्वयनमा निर्भर गर्दछ।