লাইসেন্স কী বিন্যাসকরণ লেটকোড সমাধান


কাঠিন্য মাত্রা সহজ
প্রায়শই জিজ্ঞাসা করা হয় ক্যাপিটাল ওয়ান গুগল
স্ট্রিং স্ট্রিংবিল্ডার

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

"লাইসেন্স কী ফর্ম্যাটিং" সমস্যাটিতে ইনপুটটিতে একটি হয় স্ট্রিং অক্ষরের একটি লাইসেন্স কী উপস্থাপন। প্রাথমিকভাবে, স্ট্রিংটিকে N + 1 গোষ্ঠীগুলিতে (শব্দ) বিভক্ত করে N এর মধ্যে ড্যাশ করে। আমাদের একটি পূর্ণসংখ্যার কেও দেওয়া হয়েছে এবং লক্ষ্যটি হ'ল স্ট্রিংটি এমন বিন্যাস করা যাতে প্রতিটি গোষ্ঠীতে হ'ল কে অক্ষর থাকে তবে প্রথমে যেটি কে-এর চেয়ে কম অক্ষরগুলিতে অনুমোদিত হয়। তদ্ব্যতীত, দলগুলি অবশ্যই পৃথক করা উচিত '- '(ড্যাশ) এবং কেবলমাত্র বড় হাতের অক্ষর রয়েছে।

উদাহরণ

S = "5F3Z-2e-9-w", K = 4
5F3Z-2E9W
S = "2-5g-3-J", K = 2
2-5G-3J

অভিগমন

এটি স্বজ্ঞাত যে স্ট্রিংয়ে (ইনপুট) পিছনে পুনরাবৃত্তি করার সময় আমাদের একটি নতুন স্ট্রিং তৈরি করা উচিত। এটি গুরুত্বপূর্ণ কারণ আমরা জানি প্রথম দল ব্যতীত অন্যান্য সমস্ত গোষ্ঠীর অবশ্যই ঠিক 'কে' অক্ষর থাকতে হবে। যদি আমরা স্ট্রিং এর মধ্যে আবার পুনরাবৃত্তি করি, আমরা একটি বজায় রাখতে পারি বিপরীত এটি একটি গোষ্ঠীতে যুক্ত হওয়া অক্ষরের সংখ্যা একটি গণনা রাখে। যদি এটি কোনও মুহুর্তে 'কে' এর সমান হয়, আমরা এটিকে শূন্যে পুনরায় সেট করতে পারি। এইভাবে আমরা নতুন স্ট্রিংয়ে উপাদান যুক্ত করতে থাকি এবং এটি ফিরিয়ে দেওয়ার আগে, আমরা আদেশটি ফিরে পাওয়ার জন্য এটি বিপরীত করি।

লাইসেন্স কী বিন্যাসকরণ লেটকোড সমাধানের বাস্তবায়ন

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

#include <bits/stdc++.h>

using namespace std;

string licenseKeyFormatting(string s , int k) {
    string ans;
    int cnt = 0 , n = s.size();

    for(int i = n - 1 ; i >= 0 ; i--) {
        if(s[i] != '-') {
            if(cnt == k) {
                ans += '-';
                cnt = 0;
            }
            cnt++;
            if(s[i] >= 'a' && s[i] <= 'z') {
                s[i] += 'A' - 'a';
            }
            ans += s[i];
        }
    }

    reverse(ans.begin() , ans.end());
    return ans;
}

int main() {
    string s = "5F3Z-2e-9-w";
    int K = 4;
    cout << licenseKeyFormatting(s, K) << endl;
    return 0;
}

জাভা প্রোগ্রাম

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

class license_key {
    public static void main(String args[]) {
        String s = "5F3Z-2e-9-w";
        int K = 4;
        System.out.println(licenseKeyFormatting(s , K));
    }

    public static String licenseKeyFormatting(String s , int k) {
        StringBuilder ans = new StringBuilder();
        int cnt = 0 , n = s.length();

        char c;
        for(int i = n - 1 ; i >= 0 ; i--) {
            c = s.charAt(i);
            if(c != '-') {
                if(cnt == k) {
                    ans.append('-');
                    cnt = 0;
                }
                cnt++;
                if(c >= 'a' && c <= 'z') {
                    c += 'A' - 'a';
                }
                ans.append(c);
            }
        }
        return ans.reverse().toString();
    }
}
5F3Z-2E9W

লাইসেন্স কী ফর্ম্যাটিং লেটকোড সমাধানের জটিলতা বিশ্লেষণ

সময় জটিলতা

ও (এন), এন = স্ট্রিংয়ের দৈর্ঘ্য। প্রোগ্রামটি রৈখিক যেমন আমরা একবারে স্ট্রিংটি পুনরায় করি।

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

ও (1), আমরা যেমন ধ্রুবক মেমরি স্পেস ব্যবহার করি।