எழுத்துக்களில் இருந்து முழு எண் மேப்பிங் லீட்கோட் தீர்வுக்கு சரம் டிக்ரிப்ட் செய்யுங்கள்


சிரமம் நிலை எளிதாக
அடிக்கடி கேட்கப்படுகிறது துடுக்கு விற்பனைக்குழு
சரம்

சிக்கல் அறிக்கை

இந்த சிக்கலில், இலக்கங்கள் (0-9) மற்றும் '#' ஆகியவற்றைக் கொண்ட ஒரு சரம் எங்களுக்கு வழங்கப்படுகிறது. பின்வரும் வரைபடத்தைப் பயன்படுத்தி இந்த சரத்தை நாம் சிறிய ஆங்கில எழுத்துக்களின் சரமாக மாற்ற வேண்டும்.

எழுத்துக்களில் இருந்து முழு எண் மேப்பிங் லீட்கோட் தீர்வுக்கு சரம் டிக்ரிப்ட் செய்யுங்கள்

உதாரணமாக

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

விளக்கம்:

“10 #” -> “j”, “11 #” -> “k”, “1” -> “a”, “2” -> “b”.

s = "1326#"
"acz"

விளக்கம்:

“1” -> “a”, “3” -> “c”, “26 #” -> “z”.

அணுகுமுறை

'#' பற்றி நாம் கவலைப்பட வேண்டும் என்பதை நாம் காணலாம். கவுண்டரைப் பயன்படுத்தி கொடுக்கப்பட்ட சரத்தை இடமிருந்து வலமாக நாம் பயணிக்கும்போது (நான் விடுங்கள்), பின்னர், ஒவ்வொரு குறியீட்டுக்கும் நான் (0 <= i <= n-3), அடுத்த குறியீட்டிற்கு அடுத்துள்ள எழுத்து i இலிருந்து இருக்கிறதா என்று சோதிக்க வேண்டும். அதாவது குறியீட்டு i + 2 இல் உள்ள எழுத்து '#'.

ஒவ்வொரு i க்கும் (0 முதல் n-3), குறியீட்டு i + 2 இல் உள்ள எழுத்து '#' எனில், இந்த குறியீட்டு i ஐ i + 1 உடன் இணைத்து இந்த இரண்டு இலக்கங்களைப் பயன்படுத்தி ஒரு எழுத்தை உருவாக்குங்கள்.
எ.கா. “12 #”, நாம் சரத்தை இடமிருந்து வலமாக பயணித்தால், நான் = 0 ஆக இருக்கும்போது, ​​குறியீட்டு i + 2 இல் உள்ள எழுத்து '#' என்பதைக் காண்கிறோம். இவ்வாறு i மற்றும் i + 1 குறியீடுகளில் உள்ள இலக்கங்களை ஒன்றிணைக்கவும், அதாவது 1 மற்றும் 2 இலக்கங்களை இணைத்து, அவற்றை “12” ஆக்குங்கள். இப்போது 12 ஐ அதன் எழுத்து மேப்பிங்கிற்கு மாற்றவும், அதாவது “l” ஆக மாற்றவும் சரம் கட்டுபவர் sb.
சரம் “12” ஐ 'எல்' எழுத்துக்கு மாற்ற, நாங்கள் ஒரு மாற்று செயல்பாட்டை உருவாக்கியுள்ளோம், இது ஒரு எண்ணை சரம் வடிவத்தில் எடுத்து அதை தொடர்புடைய எழுத்துக்கு மாற்றும்.
குறியீட்டு i + 2 இல் உள்ள எழுத்து '#' இல்லை என்றால், நாம் குறியீட்டு i இல் உள்ள எழுத்தை குறியீட்டு i + 1 இல் உள்ள எழுத்துடன் இணைக்கக்கூடாது.

எ.கா. “123”, குறியீட்டு i = 0 இலிருந்து பார்த்தால், குறியீட்டு i + 2 அதாவது 2 இல் உள்ள எழுத்து '#' அல்ல, எனவே எங்கள் பதிலில் “1” இன் எழுத்து மாற்றத்தை சேர்ப்போம்.

குறியீட்டு n-2 மற்றும் n-1 இல் உள்ள எழுத்துக்கு, n-1 இல் உள்ள கரி ஏற்கனவே '#' ஆக இருந்தால், நாம் குறியீட்டு n-3 க்குப் பிறகு வளையத்திற்கு வெளியே இருப்போம், இல்லையெனில் இரண்டு எழுத்துக்களும் n-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 இல் ஜாவா மற்றும் சரம் ஸ்ட்ரீம் விஷயத்தில் ஒரு சரம் பில்டரைப் பயன்படுத்தினோம். மோசமான நிலையில் நீளம் உள்ளீட்டு சரம் நீளத்திற்கு சமமாக இருக்கும். எனவே, விண்வெளி சிக்கலானது O (n) ஆகும்.