ထောင်ပေါင်းများစွာ Separator Leetcode ဖြေရှင်းချက်


ခက်ခဲအဆင့် လွယ်ကူသော
ကြိုး

ပြProbleနာဖော်ပြချက်

ဤပြproblemနာတွင်ကျွန်ုပ်တို့သည်အနုတ်လက္ခဏာမဟုတ်သောကိန်းတစ်ခုပေးသည်။ ကိန်းပြည့်ကိုဒီလိုပုံစံမျိုးနဲ့ပြောင်းရမယ်။ အဲ့ဒီ့မှာထောင်ပေါင်းများစွာကိုခွဲခြားထားတဲ့အစက်အချို့ရှိလိမ့်မယ်။ ဆိုလိုတာက ၃ နေရာမှာညာဘက်ကနေအစက်တွေရှိတယ်။

နမူနာ

#1

n = 987
"987"

#2

n = 123456789
"123.456.789"

ရှင်းလင်းချက်:

ဒီနံပါတ်က 123456789. ညာဘက်အစက်ကညာဘက်က ၃ နေရာဖြစ်လိမ့်မယ်။ ဒီတော့ညာဘက်ကိုကြည့်ရင် ၉,3 နဲ့ ၇ ကိုချန်ပြီး ၆ နဲ့ ၇ ကြားအစက်တစ်ခုထားမယ်။ ၆.၅ နဲ့ ၄ ကိုနောက်မှာထားပြီးတော့ ၃ နဲ့ ၄ ကြားကြားမှာထားမယ်။
အခု ၃.၂ နဲ့ ၁ ကိုချန်ထားပြီးဘယ်ဘက်မှာနံပါတ်များပိုများလာမှသာအစက်တစ်ချောင်းကိုထားရှိမည်။ မေးခွန်းအရဂဏန်းနှစ်ခုအကြားရှိသင့်သည်။
ထို့ကြောင့်ကျွန်ုပ်တို့သည်မည်သည့်အစက်ကိုမျှနေရာချမည်မဟုတ်ပါ။

ချဉ်းကပ်နည်း

ပထမဆုံးကိန်းကို string ထဲပြောင်းပါမယ် (str str) ။ ထိုအခါကျွန်ုပ်တို့သည်ညာဘက်ကနေ string ကို str ဖြတ်သန်းနေကြသည်။ ၎င်းအတွက် for loop ကိုအသုံးပြုနေသည်။ ကွင်းဆက်တစ်ခုစီတွင်၎င်းသည်ဂဏန်းသုံးခုကိုထည့်ပြီးနောက်တွင်အစက်တစ်ခုထည့်သည်။
သို့သော်ဂဏန်းတစ်ခုချင်းစီထည့်သွင်းပြီးသည်နှင့် str ၏ဘယ်ဘက်ခြမ်းမှထွက်မလာကိုကျွန်ုပ်တို့စစ်ဆေးပါမည်။ ဟုတ်ကဲ့လျှင်၊ ကျွန်ုပ်တို့သည်ကွင်းဆက်ကိုချိုးဖျက်လိမ့်မည်။ ဒီလိုမှမဟုတ်ရင်ကျွန်ုပ်တို့သည်ဂဏန်း ၃ လုံးကိုဆက်လက်ထည့်ပြီး ၁ အစက်တစ်လုံးကိုဆက်လုပ်ပါမည်။

သတိပြုရမည်မှာအစက်ထည့်ရန်တတိယအကြိမ်စစ်ဆေးခြင်းသည်အရေးကြီးသောအချက်ဖြစ်သည်၊ ၎င်းသည် 3 သို့မဟုတ် 123 သို့မဟုတ် 123.456 ကဲ့သို့သောအခြေအနေမျိုးတွင်ကျွန်ုပ်တို့ဘယ်ဘက်ဂဏန်းမတိုင်မှီအစက်ထည့်ရန်မလိုအပ်ပါ။
အဘယ်ကြောင့်ဆိုသော်ကျွန်ုပ်တို့သည်အက္ခရာများမှညာမှဘယ်သို့ထည့်သည်၊ အဘယ်ကြောင့်ဆိုသော်နောက်ဆုံးအဖြေရရန်ကျွန်ုပ်တို့၏ဖန်တီးထားသော string ကိုပြောင်းပြန်ပြောင်းရန်လိုအပ်သည်။ ထို့ကြောင့်နောက်ပြန်ဆုတ်ပြီးနောက် ကြိုးပြန်လာပါ

ထောင်ပေါင်းများစွာ Separator Leetcode ဖြေရှင်းချက်

အကောင်အထည်ဖော်ရေး

Thousand Separator Leetcode Solution အတွက် C ++ Program

#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

Thousand Separator Leetcode Solution အတွက် Java အစီအစဉ်

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

တစ်ထောင် Separator Leetcode ဖြေရှင်းချက်များအတွက်ရှုပ်ထွေးခွဲခြမ်းစိတ်ဖြာ

အချိန်ရှုပ်ထွေး

အို (လန်း) ကျွန်ုပ်တို့သည်လက်ျာဂဏန်းမှလက်ဝဲသို့ပေးထားသောနံပါတ်ကိုဖြတ်သန်းသွားသည်။ ထို့ကြောင့်ရှုပ်ထွေးမှုသည်အို (len) ဖြစ်သည်။ len သည်ဂဏန်းအရေအတွက်၏နံပါတ်ဖြစ်သည်။

အာကာသရှုပ်ထွေးမှု 

အို (လန်း) ကျွန်ုပ်တို့သည် java တွင် stringbuilder ကိုသုံးပြီး c ++ တွင် stringstream ကိုသုံးခဲ့ကြပြီး O (len) သည်အပိုနေရာတစ်ခုကိုအသုံးပြုခဲ့သည်။