একটি ফোন নম্বর এর লেটার সংমিশ্রণ  


কাঠিন্য মাত্রা মধ্যম
প্রায়শই জিজ্ঞাসা করা হয় মর্দানী স্ত্রীলোক আপেল Atlassian ক্যাপিটাল ওয়ান ডেটাব্রিক্স ইবে ফেসবুক গুগল মাইক্রোসফট মরগ্যান স্ট্যানলি আকাশবাণী Qualtrics Twilio উবার অথবা VMware ওয়ালমার্ট ল্যাব
ব্যাকট্র্যাকিং গভীরতা প্রথম অনুসন্ধান recursion স্ট্রিং

একটি ফোন নম্বর সমস্যার লেটার সংমিশ্রণে, আমরা একটি দিয়েছি স্ট্রিং 2 থেকে 9 পর্যন্ত সংখ্যার সমন্বিত সমস্যাটি হ'ল সমস্যাটি হ'ল সমস্ত সম্ভাব্য সংমিশ্রণগুলি খুঁজে পাওয়া যায় যা সেই সংখ্যার দ্বারা প্রতিনিধিত্ব করা যেতে পারে যদি প্রতিটি সংখ্যার কাছে কিছু চিঠি নির্ধারিত থাকে। নম্বরটির অ্যাসাইনমেন্টটি নীচে দেওয়া হয়েছে টেলিফোনের বোতামগুলির মতো।

একটি ফোন নম্বর এর লেটার সংমিশ্রণপিন

নোট করুন যে এখানে 1 তে কোনও চিঠি বরাদ্দ করা হয়নি

উদাহরণ  

"23"
["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]

দেওয়া চিঠিগুলি "2" হয় "এবিসি" এবং "3" হয় "ডিএফ" সুতরাং বর্ণগুলির সংমিশ্রণটি হবে "বিজ্ঞাপন", "এই", "আফ", "বিডি", "হতে", "বিএফ", "সিডি", "সিই" এবং "সিএফ"

অ্যালগরিদম  

  1. ঘোষণা করুন ক কিউ এবং একটি অ্যারেলিস্ট এবং স্ট্রিং বিন্যাস.
  2. স্ট্রিং অ্যারে প্রদত্ত স্ট্রিং কী হিসাবে ওয়ার্ডস সংরক্ষণ করা উচিত [10] = {"", "", "এবিসি", "ডিএফ", "জিআই", "জে কে এল", "এমএনও", "পিক্স", "টুভ", " ইংরেজি বর্ণমালার শেষ চারটি বর্ণ" };
  3. প্রথমে খালি স্ট্রিংটিকে একটি কাতারে চাপ দিন
  4. যদিও কাতারে কিছু মান রয়েছে এটি লুপের উপর দিয়ে পুনরাবৃত্তি করে।
  5. অস্থায়ী স্ট্রিংয়ের জন্য কাতারের সামনের মানটি সঞ্চয় করুন
  6. যদি অস্থায়ী স্ট্রিংয়ের দৈর্ঘ্য n এর সমান হয় (যা ইনপুট মানের দৈর্ঘ্য) তবে
  7. অস্থায়ী স্ট্রিংয়ের মান তালিকায় যুক্ত করুন।
  8. অন্যথায়, একটি লুপ খুলুন যেখানে স্ট্রিংয়ের মানটি অনুলিপি = কী [সংখ্যা [অস্থায়ী দৈর্ঘ্য ()]] হিসাবে শুরু করা হয়েছে;
  9. প্রতিটি কীওয়ার্ডের স্ট্রিংগুলিতে (0, 1) টেম্পিং স্ট্রিং যুক্ত করুন এবং এটিকে কাতারে চাপ দিন।
  10. সারি এর মান না হওয়া পর্যন্ত এটির উপর দিয়ে আইট্রেট করা হয়।
  11. রিটার্ন তালিকা।
আরো দেখুন
বাচ্চাদের সাথে গ্রেড সংখ্যক ক্যান্ডিজ লেটকোড সলিউশন

ব্যাখ্যা  

ধরুন আমাদেরকে 23 হিসাবে ইনপুট দেওয়া হয়েছে। তারপরে আমরা এটিকে পূর্ণসংখ্যায় পরিবর্তন করি। এবং আমরা এটি যেমন পেয়েছি ঠিক একইভাবে এটি ডিজিটের অ্যারেতে রূপান্তর করে। এবং আমরা ইনপুট মান এবং যে ইনপুট মান দৈর্ঘ্য আমরা ফাংশন যা আমরা একটি সংমিশ্রণ হিসাবে নাম তৈরি করেছেন মধ্যে পাস করব।

সেই ফাংশনে আমরা আমাদের কীওয়ার্ডগুলির স্ট্রিং কীওয়ার্ডগুলি [10] = {"", "", "এবিসি", "ডিএফ", "জিআই", "জেকেএল", "এমএনও", "পিক্স", "টুভ", " ইংরেজি বর্ণমালার শেষ চারটি বর্ণ" }

আমরা এই মানগুলি getCombination নামক অন্য একটি ফাংশনে পাস করি যেখানে আমরা আউটপুট পাই।

সুতরাং আমরা উদাহরণ হিসাবে ২৩ টি গ্রহণ করি এটি যথাক্রমে 23, 2 সূচীতে অ্যারে = {3, 0। এ সঞ্চয় করা হয়।

সুতরাং এখন একটি ফাংশনে, আমরা একটি সারি ঘোষণা করলাম এবং একটি তালিকা যা আমাদের আউটপুট সংরক্ষণ করতে চলেছে।

আমরা একটি ফাঁকা স্ট্রিংকে কুইতে চাপি;
que = “”;

Enterুকছে a লুপ করার সময়: আমরা কাতারের সামনের অংশটি টেম্পল এ পেয়েছি এবং এটি কাতার থেকে সরিয়েছি,
টেম্প = ""

এখন যদি কোনও অংশ কার্যকর হয় না কারণ মানগুলি টেম্প এবং এন থেকে আলাদা। সুতরাং এটি কাজ করে যা অন্য অংশ চালায়
অনুলিপি = অস্থায়ী দৈর্ঘ্য = 0 => সংখ্যা [0] = 2 => কী [2] = "এবিসি"
যার অর্থ কপি = "অ্যাবসি";

এখন এটি লুপের জন্য পুনরাবৃত্তি করবে
এবং ক, ক এবং গ মধ্যে ক যোগ করুন।

এখন আবার এটি (! Que.isEmpty ()) এর সময় যাচাই করে এবং এটি সত্য তাই এটি চলতে থাকে এবং এটি টেম্পের মধ্যে কাতার সামনে নিয়ে যায় যা "ক" এবং একটিটিকে সরিয়ে দেয়।
অনুলিপি = অস্থায়ী দৈর্ঘ্য = 1 => সংখ্যা [1] = 3 => কী [3] = "ডিএফ"
সুতরাং এখন এটি ডি, ই এবং এফ সহ একটি সংযুক্ত করবে এবং যথাক্রমে এটি সারিতে চাপ দেবে।

এখন আবার এটি (! Que.isEmpty ()) এর সময় যাচাই করে এবং এটি সত্য তাই এটি চলতে থাকে এবং এটি টেম্পের মধ্যে কাতারের সামনের অংশটি নেয় যা এখন "খ" এবং খ কে সরিয়ে দেয়।
অনুলিপি = অস্থায়ী দৈর্ঘ্য = 1 => সংখ্যা [1] = 3 => কী [3] = "ডিএফ"
সুতরাং এখন এটি ডি, ই এবং এফের সাথে বি সংযোজন করবে এবং যথাক্রমে এটিকে কাতারে ধাক্কা দেবে।

আরো দেখুন
কে ডিস্টিন্ট নম্বর সহ ক্ষুদ্রতম সুবরে

এখন আবার এটি (! Que.isEmpty ()) এর সময় যাচাই করে এবং এটি সত্য তাই এটি চলতে থাকে এবং এটি টেম্পের মধ্যে কাতারের সামনের অংশটি "সি" করে এবং সিটিকে সরিয়ে দেয়।
অনুলিপি = অস্থায়ী দৈর্ঘ্য = 1 => সংখ্যা [1] = 3 => কী [3] = "ডিএফ"
সুতরাং এখন এটি ডি, ই এবং এফ দিয়ে সি সংযোজন করবে এবং যথাক্রমে এটি সারিতে চাপ দেবে।

এখন যদি এটি টেম্পের মধ্যে সারিটির সামনের অংশটি নেয় এবং সন্ধান করে যে টেম্পলেন্থ দৈর্ঘ্য n এর সমান। এবং টেম্প যুক্ত করুন এবং ক্রমানুসারে এটি আমাদের প্রতিটি সংমিশ্রণ যুক্ত করতে চলেছে।
এবং আমরা আউটপুট পাই: (বিজ্ঞাপন, এ, আফ, বিডি, হতে, বিএফ, সিডি, সিই, সিএফ)

বাস্তবায়ন  

ফোন নম্বরটির লেটার সংমিশ্রণ সন্ধান করতে সি ++ প্রোগ্রাম

#include<iostream>
#include<queue>
#include<sstream>
using namespace std;

vector<string> getCombination( int inputValue[], int n, string keyWords[])
{
    vector<string> list;

    queue<string> que;
    que.push("");

    while (!que.empty())
    {
        string temp = que.front();
        que.pop();
        if (temp.length() == n)
            list.push_back(temp);
        else
            for (auto getword : keyWords[inputValue[temp.length()]])
                que.push(temp + getword);
    }

    return list;
}

void combination( int inputValue[], int n)
{

    string keyWords[10]
        = { "", "", "abc", "def", "ghi", "jkl",
            "mno", "pqrs", "tuv", "wxyz"
          };

    vector<string> list= getCombination(inputValue, n, keyWords);

    for (auto word : list)
        cout << word << " ";

    return;
}

int main()
{
    string s="23";
    stringstream comb(s);
    int le=s.length();
    int inputValue[le];
    int i=0,x=0;
    comb>>x;
    while(x>0)
    {
        inputValue[le-i-1]=x%10;
        x/=10;
        i++;
    }
    int lengths = sizeof(inputValue) / sizeof(inputValue[0]);

    combination(inputValue, lengths);
    return 0;
}
ad ae af bd be bf cd ce cf

জাভা প্রোগ্রাম একটি ফোন নম্বর এর লেটার সংমিশ্রণ সন্ধান করতে

import java.util.*;

class combinationNumber {
  static ArrayList<String> getCombination(int[] number, int n, String[] keys) {
    ArrayList<String> getList = new ArrayList<>();

    Queue<String> que = new LinkedList<>();

    que.add("");

    while (!que.isEmpty()) {
      String temp = que.remove();

      if (temp.length() == n)
        getList.add(temp);
      else {
        String copy = keys[number[temp.length()]];
        for (int i = 0; i<copy.length(); i++) {
          que.add(temp + copy.charAt(i));
        }
      }
    }
    return getList;
  }

  static void combination(int[] inputValue, int n) {
    String[] keyWords = {
      "", "", "abc", "def", "ghi", "jkl",
      "mno", "pqrs", "tuv", "wxyz"
    };

    ArrayList<String> output = getCombination(inputValue, n, keyWords);

    for (int i = 0; i<output.size(); i++) {
      System.out.print(output.get(i) + " ");
    }
  }

  public static void main(String args[]) {
    String s = "23";
    int numb = Integer.valueOf(s);
    int i = 0;
    int[] inputValue = new int[s.length()];
    while (numb > 0) {
      inputValue[s.length() - i - 1] = numb % 10;
      numb /= 10;
      i++;
    }

    int lengths = inputValue.length;
    combination(inputValue, lengths);
  }
}
ad ae af bd be bf cd ce cf

জটিলতা বিশ্লেষণ  

সময় জটিলতা

ও (3)N । 4M) যেখানে এন হ'ল এমন অঙ্কের সংখ্যা যেখানে 3 টি অক্ষর থাকে (উদা: 2,3,4) এটি নির্ধারিত হয় এবং এম এটি সংখ্যার সংখ্যা যেখানে 4 টি অক্ষর (প্রাক্তন: 7,9) নির্ধারিত হয়।

আরো দেখুন
এক্সেল শীট কলাম নম্বর লেটকোড সমাধান

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

ও (3)N । 4M) যেখানে এন হ'ল এমন অঙ্কের সংখ্যা যেখানে 3 টি অক্ষর থাকে (উদা: 2,3,4) এটি নির্ধারিত হয় এবং এম এটি সংখ্যার সংখ্যা যেখানে 4 টি অক্ষর (প্রাক্তন: 7,9) নির্ধারিত হয়।