ஐபி முகவரி லீட்கோட் தீர்வை நீக்குதல்


சிரமம் நிலை எளிதாக
அடிக்கடி கேட்கப்படுகிறது அமேசான்
சரம் StringBuffer

சிக்கல் அறிக்கை

இந்த சிக்கலில், எங்களுக்கு ஒரு ஐபி முகவரி வழங்கப்படுகிறது. நாம் அதை ஒரு தீட்டுப்படுத்தப்பட்ட ஐபி முகவரியாக மாற்ற வேண்டும், அதாவது எங்கள் வெளியீட்டு சரத்தில், அனைத்தும் “.” அவை “[.]” ஆக மாற்றப்படுகின்றன.

ஐபி முகவரி லீட்கோட் தீர்வை நீக்குதல்

உதாரணமாக

#1:

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

#2:

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

அணுகுமுறை 1 (சரம் நீரோடை / பில்டரைப் பயன்படுத்துதல்)

இந்த சிக்கலுக்கு, கொடுக்கப்பட்ட சரத்தை மாற்ற எளிய சரம் ஸ்ட்ரீம் அல்லது பில்டர் வகுப்பைப் பயன்படுத்தலாம்.
நாம் ஒரு பயன்படுத்தலாம் சரம் கட்டடம் (ஜாவாவின் விஷயத்தில்) மற்றும் கொடுக்கப்பட்ட சரத்தை வெளியீட்டு சரமாக மாற்ற சரம் ஸ்ட்ரீம் (சி ++ விஷயத்தில்).
உள்ளீட்டு சரத்தை இடமிருந்து வலமாக பயணிப்போம். எந்த கதாபாத்திரமும் இருந்தால் '.' பின்னர், வெளியீட்டு சரத்தில் “[.]” ஐ சேர்ப்போம். இல்லையெனில் வெளியீட்டு சரத்திலும் எழுத்துக்குறியைச் சேர்ப்போம்.

அல்காரிதம்

  • வெற்று சரம் ஸ்ட்ரீம் அல்லது பில்டரை உருவாக்கவும்.
  • கொடுக்கப்பட்ட சரத்தின் ஒவ்வொரு எழுத்தையும் பயணிக்க லூப் ஃபார் லூப்பை இயக்கவும்.
  • சரத்தில் உள்ள ஒவ்வொரு எழுத்துக்கும். எழுத்து என்றால் '. ” பின்னர் சரம் கட்டடத்தில் “[.]” ஐச் சேர்க்கவும். அதே எழுத்தை சரம் பில்டருடன் சேர்க்கவும்.
  • ஸ்ட்ரீம் / பில்டரை சரமாக மாற்றி திருப்பித் தரவும்.

ஐபி முகவரி லீட்கோட் தீர்வைத் தீர்ப்பதற்கான நடைமுறை

சி ++ திட்டம்

#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

ஐபி முகவரி லீட்கோட் தீர்வைத் தீர்ப்பதற்கான சிக்கலான பகுப்பாய்வு

நேர சிக்கலானது

ஓ (ந): கொடுக்கப்பட்ட சரத்தை நேர்கோட்டுடன் பயணிக்கிறோம், இதனால் இது ஓ (என்).

விண்வெளி சிக்கலானது 

ஓ (ந): ஜாவா விஷயத்தில் நாம் நேரியல் கூடுதல் இடமாக இருக்கும் சரம் பில்டரைப் பயன்படுத்தினோம், சி ++ விஷயத்தில் நாம் சரம் ஸ்ட்ரீமைப் பயன்படுத்தினோம், இதனால் விண்வெளி சிக்கலானது O (n) ஆகும்.

அணுகுமுறை 2 (உள்ளமைக்கப்பட்ட செயல்பாட்டைப் பயன்படுத்துதல்)

சி ++ இல் ரீஜெக்ஸ் மாற்று செயல்பாட்டைப் பயன்படுத்துவோம் மற்றும் ஜாவாவில் உள்ள அனைத்து செயல்பாடுகளையும் மாற்றுவோம்:

எல்லாவற்றையும் மாற்றுவதற்கு C ++ இன் regex_replace செயல்பாட்டைப் பயன்படுத்தலாம். to “[.]”.
மேலும், ஜாவா விஷயத்தில், எல்லாவற்றையும் மாற்றுவதற்கு replaceAll () செயல்பாட்டைப் பயன்படுத்தலாம். to “[.]”.

ஐபி முகவரி லீட்கோட் தீர்வைத் தீர்ப்பதற்கான நடைமுறை

சி ++ திட்டம்

#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

ஐபி முகவரி லீட்கோட் தீர்வைத் தீர்ப்பதற்கான சிக்கலான பகுப்பாய்வு

நேர சிக்கலானது

நேர சிக்கலானது முன் வரையறுக்கப்பட்ட செயல்பாடுகளின் உள் செயல்பாட்டைப் பொறுத்தது.

விண்வெளி சிக்கலானது 

விண்வெளி சிக்கலானது முன் வரையறுக்கப்பட்ட செயல்பாடுகளின் உள் செயல்பாட்டையும் சார்ந்துள்ளது.