वर्णमाला से इंटेगर मैपिंग लेटकोड सॉल्यूशन के लिए डिक्रिप्ट स्ट्रिंग


कठिनाई स्तर आसान
में अक्सर पूछा ताना Salesforce
तार

समस्या का विवरण

इस समस्या में, हमें एक स्ट्रिंग दी जाती है जिसमें अंक (0-9) और '#' होते हैं। हमें निम्न स्ट्रिंग का उपयोग करके इस स्ट्रिंग को लोअरकेस अंग्रेजी अक्षरों के स्ट्रिंग में बदलना होगा।

वर्णमाला से इंटेगर मैपिंग लेटकोड सॉल्यूशन के लिए डिक्रिप्ट स्ट्रिंग

उदाहरण

s = "10#11#12"
"jkab"

स्पष्टीकरण:

"10 #" -> "जे", "11 #" -> "के", "1" -> "ए", "2" -> "बी"।

s = "1326#"
"acz"

स्पष्टीकरण:

"1" -> "ए", "3" -> "सी", "26 #" -> "जेड"।

दृष्टिकोण

हम देख सकते हैं कि हमें सिर्फ '#' की चिंता करनी है। जब हम काउंटर (लेट i) का उपयोग करते हुए बाएं से दाएं स्ट्रिंग को पीछे छोड़ते हैं, तो, प्रत्येक इंडेक्स i (0 <= i <= n-3) के लिए, हमें सिर्फ यह जांचना होगा कि क्या चरित्र अगले से अगले इंडेक्स पर i इंडेक्स i + 2 में वर्ण '#' है।

प्रत्येक i (0 से n-3) के लिए, यदि इंडेक्स i + 2 पर वर्ण '#' है, तो इस इंडेक्स i को i + 1 के साथ संयोजित करें और इन दो अंकों का उपयोग करके एक वर्ण बनाएं।
उदाहरण के लिए, "12 #", अगर हम स्ट्रिंग को बाएं से दाएं की ओर ले जाते हैं, तो हम देखते हैं कि जब i = 0 तब सूचकांक i + 2 पर वर्ण '#' है। इस प्रकार अनुक्रमित I और i + 1 में मौजूद अंकों को मिलाएं और 1 और 2 अंकों को मिलाएं, उन्हें "12" बनाएं। अब 12 को इसके कैरेक्टर मैपिंग यानी "l" में बदलें और इसे इसमें जोड़ें गाली देनेवाला sb।
स्ट्रिंग "12" को चरित्र 'l' में बदलने के लिए, हमने एक कन्वर्ट फंक्शन बनाया है, जो स्ट्रिंग फॉर्मेट में एक नंबर लेता है और इसे संबंधित कैरेक्टर में बदलता है।
और यदि इंडेक्स I + 2 पर वर्ण '#' नहीं है, तो हमें इंडेक्स I + 1 में वर्ण के साथ वर्ण I को संयोजित नहीं करना चाहिए।

उदाहरण के लिए "123", यदि हम इंडेक्स i = 0 से देखते हैं, तो इंडेक्स i + 2 अर्थात 2 पर वर्ण '#' नहीं है, इस प्रकार हम अपने उत्तर में केवल "1" के चरित्र रूपांतरण को जोड़ देंगे।

इंडेक्स एन -2 और एन -1 पर चरित्र के लिए, हम यह कह सकते हैं कि यदि एन -1 पर चार पहले से ही '#' होगा, तो हम इंडेक्स एन -3 के बाद लूप से बाहर होंगे, बाकी दोनों अक्षर एन -2 पर और n-1 को अलग से मैप किया जाना चाहिए।

कार्यान्वयन

सी + + प्रोग्राम के लिए डिक्रिप्ट स्ट्रिंग के लिए वर्णमाला से इंटेगर मैपिंग लेकोडकोड समाधान

#include <bits/stdc++.h>
using namespace std;

char convert(string str){
    stringstream ss(str);
    int num;
    ss>>num;
    return num+96;
}

string freqAlphabets(string s) {
        stringstream ss;
        int i=0;
        while(i<s.length()-2){
            char ch;
            if(s[i+2]=='#'){
                ch=(char)convert(s.substr(i, 2) );
                i+=2;
            }else{
                ch=(char)convert(s.substr(i,1));
            }
            i++;
            ss<<ch;
        }
        while(i<s.length()){
            char ch=(char)convert(s.substr(i,1));
            ss<<ch;
            i++;
        }
        
        return ss.str();
    }

int main()
{
    cout << freqAlphabets("1326#") ;
}
acz

अल्फा प्रोग्राम फॉर डिक्रिप्ट स्ट्रिंग टू अल्फाबेट से इंटेगर मैपिंग लेटकोड सॉल्यूशन

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

class Rextester
{  
    public static String freqAlphabets(String s) {
        StringBuilder sb=new StringBuilder();
        int i=0;
        while(i<s.length()-2){
            char ch;
            if(s.charAt(i+2)=='#'){
                ch=(char)convert(s.substring(i,i+2));
                i+=2;
            }else{
                ch=(char)convert(s.substring(i,i+1));
            }
            i++;
            sb.append(ch);
        }
        while(i<s.length()){
            char ch=(char)convert(s.substring(i,i+1));
            sb.append(ch);
            i++;
        }
        
        return sb.toString();
    }
    
    
    public static int convert(String str){
        int num=Integer.parseInt(str);
        return num+96;
    }

    public static void main(String args[])
    {
        System.out.println(freqAlphabets("10#11#12"));
    }
}
jkab

वर्णमाला से इंटेगर मैपिंग लेकोडकोड समाधान के लिए डिक्रिप्ट स्ट्रिंग के लिए जटिलता विश्लेषण

समय जटिलता

पर): क्योंकि हम अपने इनपुट स्ट्रिंग को रैखिक रूप से बाईं ओर से दाईं ओर ट्रेस कर रहे हैं, इसलिए O (n) समय लिया जाएगा।

अंतरिक्ष जटिलता 

पर): हमने जावा में स्ट्रिंग बिल्डर और cpp में स्ट्रिंग स्ट्रीम का उपयोग किया है। सबसे खराब स्थिति में लंबाई इनपुट स्ट्रिंग लंबाई के समान होगी। इस प्रकार, अंतरिक्ष जटिलता भी ओ (एन) है।