हजार विभाजक लीटकोड सोल्यूशन


अडचण पातळी सोपे
अक्षरमाळा

समस्या विधान

या समस्येमध्ये, आम्हाला एक नकारात्मक-नकारात्मक पूर्णांक दिलेला आहे. आपल्याला पूर्णांक अशा स्वरुपात रूपांतरित करावा लागेल, ज्यामध्ये काही ठिपके असतील ज्या सर्व हजारांना विभक्त करतात, म्हणजे प्रत्येक उजवीकडे तीन ठिकाणी नंतर ठिपके आहेत.

उदाहरण

#1

n = 987
"987"

#2

n = 123456789
"123.456.789"

स्पष्टीकरण:

ही संख्या 123456789 आहे. उजवीकडील बिंदू उजवीकडून 3 ठिकाणे असेल. तर, उजवीकडे वरून आपण,, and आणि behind मागे ठेवू आणि and ते between दरम्यान एक बिंदू ठेवू. त्यानंतर ,, and आणि behind मागे ठेवून 9,8 ते between दरम्यान एक बिंदू ठेवू.
आता 3,2,२ आणि १ मागे सोडल्यास डावीकडे आणखी संख्या असल्यासच आम्ही बिंदू ठेवू कारण कारण. प्रश्नानुसार दोन संख्येच्या दरम्यान असावे.
अशा प्रकारे आपण कोणतेही ठिपके ठेवणार नाही.

दृष्टीकोन

सर्व प्रथम, आम्ही संख्या स्ट्रिंगमध्ये बदलू (ले स्ट्रिंग). तर आपण स्ट्रिंग स्ट्रिंग उजवीकडून ट्रॅस करत आहोत. त्यासाठी लूप वापरणार आहोत. प्रत्येक लूपमध्ये आपण त्याचे तीन अंक समाविष्ट करीत आहोत त्यानंतर एक बिंदू.
परंतु प्रत्येक अंकांच्या समाकलनानंतर आम्ही स्ट्रिंगच्या डाव्या सीमेवरुन पोहोचलो आहोत का ते तपासू. जर होय असेल तर आपण लूप तोडू. अन्यथा आम्ही 3 अंक आणि नंतर 1 बिंदू घालत राहू.

लक्षात ठेवा डॉट समाविष्ट करण्यासाठी 3 रा तपासणी करणे महत्त्वपूर्ण आहे, जे 123 किंवा 123.456 किंवा 123.456.789 सारख्या परिस्थितीत वापरले जाईल जिथे डावीकडच्या अंकी आधी आपल्याला बिंदू घालण्याची आवश्यकता नाही.
कारण आम्ही उजवीकडून डावीकडे अक्षरे घालत आहोत म्हणून अंतिम उत्तर मिळवण्यासाठी आमची तयार केलेली स्ट्रिंग उलट करणे आवश्यक आहे. उलट, नंतर स्ट्रिंग, ते परत करा.

हजार विभाजक लीटकोड सोल्यूशन

अंमलबजावणी

सी ++ प्रोग्राम फॉर हज़ार सेपरेटर लेटकोड सोल्यूशन

#include <bits/stdc++.h> 
using namespace std;
string thousandSeparator(int n) {
    string str=to_string(n);
    stringstream ss;
    for(int i=str.length()-1;i>=0;){
        ss<<str[i];//inserting 1st digit
        i--;
        if(i==-1)break;//checking if we are out of left bound
        ss<<str[i];//inserting 2nd digit
        i--;
        if(i==-1)break;//checking if we are out of left bound
        ss<<str[i];//inserting 3rd digit
        i--;
        if(i==-1)break;//checking if we are out of left bound
        ss<<".";//after 3 digits insertion, finally inserting a dot "."
    }
    str= ss.str();
    reverse(str.begin(),str.end());//reversing the final string
    return str;
}

int main()
{
    cout << thousandSeparator(123456789);
}
123.456.789

हजारो सेपरेटर लेटकोड सोल्यूशनसाठी जावा प्रोग्राम

import java.util.*;
import java.lang.*;

class Solution
{  
    public static  String thousandSeparator(int n) 
    {
        String str=n+"";
        StringBuilder sb=new StringBuilder();
        for(int i=str.length()-1;i>=0;){
            sb.append(str.charAt(i));//inserting 1st digit
            i--;
            if(i==-1)break;//checking if we are out of left bound
            sb.append(str.charAt(i));//inserting 2nd digit
            i--;
            if(i==-1)break;//checking if we are out of left bound
            sb.append(str.charAt(i));//inserting 3rd digit
            i--;
            if(i==-1)break;//checking if we are out of left bound
            sb.append(".");//after 3 digits insertion, finally inserting a dot "."
        }
        return sb.reverse().toString();//reverse and return the final string
    }
    
    public static void main(String args[])
    {
        System.out.println(thousandSeparator(123456789));
    }
}
123.456.789

हजार सेपरेटर लेटकोड सोल्यूशनसाठी जटिलता विश्लेषण

वेळ कॉम्प्लेक्सिटी

ओ (लेन): आम्ही दिलेली संख्या उजवीकडील अंशापासून डावीकडे वळवित आहोत म्हणजे कॉम्प्लेक्सिटी ओ (लेन) असेल जिथे लेन दिलेल्या संख्येतील अंकांची संख्या असेल.

स्पेस कॉम्प्लेक्सिटी 

ओ (लेन): आम्ही जावा मध्ये स्ट्रिंगबिल्डर आणि c ++ मध्ये स्ट्रिंगस्ट्रीम वापरला आहे. अशा प्रकारे अतिरिक्त स्पेस वापरल्याने स्पेस कॉम्प्लेक्सिटी ओ (लेन) होते.