लाइसेन्स कुञ्जी स्वरूपण लेटकोड समाधान


कठिनाई तह सजिलो
बारम्बार सोधिन्छ राजधानी एक गुगल
घागो StringBuilder

समस्या वक्तव्य

समस्यामा "इजाजत पत्र कुञ्जी स्वरूपण", इनपुटमा a समावेश हुन्छ string पात्रहरूको, लाइसेन्स कुञ्जी प्रतिनिधित्व गर्दै। प्रारम्भमा, स्ट्री +्ग N + 1 समूहहरू (शब्दहरू) मा N ड्यासहरू बीच बिच विभाजित हुन्छ। हामीलाई एक पूर्णा K्कन के पनि दिइन्छ, र लक्ष्य स्ट्रि format फर्म्याट गर्नु हो कि प्रत्येक समूहले ठीक के अक्षरहरू समावेश गर्दछ, पहिलोलाई बाहेक, जसलाई के भन्दा कम वर्णको लागि अनुमति दिइन्छ। थप, समूहहरू '- द्वारा विभाजित हुनुपर्दछ। '(ड्यास) र केवल ठूला अक्षरहरू छन्।

उदाहरणका

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

दृष्टिकोण

यो सहज हो कि हामीले स्ट्रिंग s (इनपुट) मा पछाडि इन्टरेट गर्दा नयाँ स्ट्रिंग सिर्जना गर्नुपर्दछ। यो महत्त्वपूर्ण छ किनकि हामीलाई थाहा छ पहिलो समूह बाहेक अरू सबै समूहहरूमा उनीहरूसँग ठ्याक्कै 'के' अक्षरहरू हुनुपर्दछ। यदि हामी स्ट्रिंग s मा पुन: पुनरावृत्ति गर्छौं भने हामी a काउन्टर यसले समूहमा थपिएको अक्षरहरूको संख्याको गन्ती राख्दछ। यदि यो कुनै पनि क्षण 'k' बराबर हुन्छ भने, हामी यसलाई शून्यमा पुनःसेट गर्न सक्छौं। यस तरीकाले हामी नयाँ स्ट्रिंगमा एलिमेन्टहरू थप्न जारी राख्छौं र फिर्ता गर्नु अघि, हामी यसलाई अर्डर प्राप्त गर्नका लागि उल्टाउँछौं।

लाइसेन्स कुञ्जी स्वरूपण लेटकोड समाधानको कार्यान्वयन

C ++ कार्यक्रम

#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

लाइसेन्स कुञ्जी स्वरूपण लेटकोड समाधानको जटिलता विश्लेषण

समय जटिलता

O (N), N = स्ट्रिंगको लम्बाई। कार्यक्रम रेखीय छ किनकि हामी एक पटक स्ट्रि ite पुनरावृत्ति गर्छौं।

ठाउँ जटिलता 

O (१), हामी स्थिर मेमोरी स्पेसको रूपमा प्रयोग गर्दछौं।