अक्षरे ते पूर्णांक मॅपिंग लीटकोड सोल्यूशनपर्यंत डिक्रिप्ट स्ट्रिंग


अडचण पातळी सोपे
वारंवार विचारले क्विप सेल्सबॉल्स
अक्षरमाळा

समस्या विधान

या समस्येमध्ये, आम्हाला अंक (0-9) आणि '#' असलेली एक स्ट्रिंग दिली आहे. आम्हाला या स्ट्रिंगला खालील मॅपींगचा वापर करून लोअरकेस इंग्रजी अक्षराच्या एक तारात रूपांतरित करावे लागेल.

अक्षरे ते पूर्णांक मॅपिंग लीटकोड सोल्यूशनपर्यंत डिक्रिप्ट स्ट्रिंग

उदाहरण

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

स्पष्टीकरण:

“10 #” -> “जे”, “11 #” -> “के”, “१” -> “ए”, “२” -> “बी”.

s = "1326#"
"acz"

स्पष्टीकरण:

“१” -> “अ”, “” ”->“ सी ​​”,“ २ # # ”->“ झेड ”.

दृष्टीकोन

आपण पाहू शकता की आपल्याला फक्त '#' बद्दल चिंता करावी लागेल. जेव्हा आपण दिलेली स्ट्रिंग डावीकडून उजवीकडून काउंटर (आय i) वापरुन पुढे करतो, तर प्रत्येक अनुक्रमणिका i (0 <= i <= n-3) साठी, आपण i वरुन पुढील अनुक्रमणिकेच्या पुढील वर्ण तपासले पाहिजे. म्हणजे अनुक्रमणिका i + 2 मधील वर्ण '#' आहे.

प्रत्येक आयसाठी (० ते एन-)), जर निर्देशांक i + २ मधील वर्ण '#' असेल तर ही अनुक्रमणिका i + 0 सह एकत्र करा आणि हे दोन अंक वापरुन एक वर्ण तयार करा.
उदा. “१२ #”, जर आपण डावीकडून उजवीकडे स्ट्रिंग ओलांडले तर आपण पाहू की जेव्हा i = 12 असेल तर अनुक्रमणिका i + 0 मधील वर्ण '#' असेल. म्हणून अनुक्रमणिका i आणि i + 2 मधील उपस्थित अंक एकत्र करा म्हणजे अंक 1 आणि 1 एकत्र करा, त्यांना “2” बनवा. आता त्याच्या कॅरॅक्टर मॅपिंग मध्ये 12 रुपांतरित करा म्हणजेच “l” आणि त्यामध्ये जोडा स्ट्रिंगबिल्डर एसबी.
स्ट्रिंग “12” ला कॅरॅक्टर 'l' मध्ये रुपांतरित करण्यासाठी, आम्ही एक कन्व्हर्ट फंक्शन तयार केले आहे, जे स्ट्रिंग फॉरमॅटमध्ये नंबर घेते आणि त्यास संबंधित कॅरॅक्टरमध्ये रूपांतरित करते.
जर निर्देशांक i + 2 मधील वर्ण '#' नसेल तर आपण अनुक्रमणिका i + 1 मधील वर्णांसह निर्देशांक i मधील वर्ण एकत्र करू नये.

उदा. “१२123”, जर आपण अनुक्रमणिका i = ०, अनुक्रमणिका i + २ म्हणजेच २ चे वर्ण '#' नसल्यास अशा प्रकारे आपण आपल्या उत्तरामध्ये “१” चे वर्ण रूपांतरण समाविष्ट करू.

अनुक्रमणिका एन -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

अक्षरापासून इंटिजर मॅपिंग लीटकोड सोल्यूशनपर्यंत डिक्रिप्ट स्ट्रिंगसाठी जटिलता विश्लेषण

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

ओ (एन): कारण आम्ही आमची इनपुट स्ट्रिंग रेषेत डावीकडून उजवीकडे वळवत आहोत त्यामुळे ओ (एन) वेळ लागेल.

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

ओ (एन): सीपीपीमध्ये जावा आणि स्ट्रिंग स्ट्रीमच्या बाबतीत आम्ही स्ट्रिंग बिल्डर वापरला आहे. सर्वात वाईट परिस्थितीत लांबी इनपुट स्ट्रिंगच्या लांबीइतकीच असेल. अशा प्रकारे, अवकाश जटिलता देखील ओ (एन) आहे.