একটি আইপি অ্যাড্রেস লেটকোড সলিউশনকে অস্বীকার করা


কাঠিন্য মাত্রা সহজ
প্রায়শই জিজ্ঞাসা করা হয় মর্দানী স্ত্রীলোক
স্ট্রিং স্ট্রিংবাফার

সমস্যা বিবৃতি

এই সমস্যায়, আমাদের একটি আইপি ঠিকানা দেওয়া হয়। আমাদের কেবল এটিকে একটি ডিফ্যান্সড আইপি ঠিকানায় রূপান্তর করতে হবে অর্থাৎ আমাদের আউটপুট স্ট্রিংয়ে, সমস্ত "।" "[।]" তে রূপান্তরিত হয়।

একটি আইপি অ্যাড্রেস লেটকোড সলিউশনকে অস্বীকার করা

উদাহরণ

#1:

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

#2:

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

পন্থা 1 (স্ট্রিং স্ট্রিম / বিল্ডার ব্যবহার করে)

এই সমস্যার জন্য আমরা প্রদত্ত স্ট্রিংটি সংশোধন করতে সাধারণ স্ট্রিং স্ট্রিম বা বিল্ডার শ্রেণি ব্যবহার করতে পারি।
আমরা একটি ব্যবহার করতে পারেন স্ট্রিং নির্মাতা (জাভা ক্ষেত্রে) এবং স্ট্রিং স্ট্রিম (সি ++ এর ক্ষেত্রে) প্রদত্ত স্ট্রিংটিকে আউটপুট স্ট্রিংয়ে রূপান্তর করতে।
আমরা ইনপুট স্ট্রিংটি বাম থেকে ডানে পেরোব will কোনও চরিত্র যদি হয় '।' তারপরে, আমরা আউটপুট স্ট্রিংয়ে "[।]" যুক্ত করব। অন্যথায় আমরা কেবল আউটপুট স্ট্রিংয়ে অক্ষর যুক্ত করব।

অ্যালগরিদম

  • একটি খালি স্ট্রিং স্ট্রিম বা বিল্ডার তৈরি করুন।
  • প্রদত্ত স্ট্রিংয়ের প্রতিটি অক্ষরকে অতিক্রম করতে লুপের জন্য চালান।
  • স্ট্রিং প্রতিটি অক্ষরের জন্য। চরিত্রটি যদি হয় '' তারপরে স্ট্রিং বিল্ডারে "[।]" যুক্ত করুন। অন্য স্ট্রিং বিল্ডারে একই অক্ষর যুক্ত করুন।
  • স্ট্রিম / বিল্ডারকে স্ট্রিংয়ে রূপান্তর করুন এবং এটি ফিরিয়ে দিন।

আইপি অ্যাড্রেস লেটকোড সলিউশনটি ডেফ্যাং করার জন্য বাস্তবায়ন

সি ++ প্রোগ্রাম

#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

কোনও আইপি অ্যাড্রেস লেটকোড সমাধান সমাধান করার জন্য জটিলতা বিশ্লেষণ

সময় জটিলতা

চালু) : আমরা প্রদত্ত স্ট্রিংকে রৈখিকভাবে অতিক্রম করছি, সুতরাং এটি ও (এন)।

স্পেস জটিলতা ity 

চালু) : জাভার ক্ষেত্রে আমরা স্ট্রিং বিল্ডার ব্যবহার করেছি যা লিনিয়ার অতিরিক্ত স্থান এবং সি ++ এর ক্ষেত্রে আমরা স্ট্রিং স্ট্রিম ব্যবহার করেছি সুতরাং স্থান জটিলতা হ'ল (এন)।

পদ্ধতির 2 (অন্তর্নির্মিত ফাংশন ব্যবহার করে)

আমরা সি ++ এ রিজেক্স রিপ্লেজ ফাংশনটি ব্যবহার করব এবং জাভাতে সমস্ত ফাংশন প্রতিস্থাপন করব:

আমরা সমস্ত প্রতিস্থাপন করতে C ++ এর regex_replace ফাংশন ব্যবহার করতে পারি। প্রতি "[.]".
এছাড়াও, জাভা ক্ষেত্রে, আমরা প্রতিস্থাপন করতে সমস্ত ") ফাংশন ব্যবহার করতে পারি"। প্রতি "[.]".

আইপি অ্যাড্রেস লেটকোড সলিউশনটি ডেফ্যাং করার জন্য বাস্তবায়ন

সি ++ প্রোগ্রাম

#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

কোনও আইপি অ্যাড্রেস লেটকোড সমাধান সমাধান করার জন্য জটিলতা বিশ্লেষণ

সময় জটিলতা

সময়ের জটিলতা পূর্বনির্ধারিত ফাংশনগুলির অভ্যন্তরীণ বাস্তবায়নের উপর নির্ভর করবে।

স্পেস জটিলতা ity 

স্থান জটিলতা পূর্বনির্ধারিত ফাংশনগুলির অভ্যন্তরীণ বাস্তবায়নের উপরও নির্ভর করবে।