فون نمبر جو خط گڏجاڻيون


تڪليف جي سطح وچولو
بار بار پڇڻ ۾ Amazon ايپل Atlassian گاديء جو هڪ بنيادي دستاويزن eBay ڪريو گوگل Microsoft جي مارگن Stanley Oracle قوتون Twilio سليمان وساڻ VMware والارٽ ليبز
واپسي گہرائي پهرين ڳولا ٻيھر اسٽرنگ

فون نمبر جي مسئلي جي خطن جي ميلاپ ۾ ، اسان هڪ ڏنو آهي جملو 2 کان 9. نمبرن تي مشتمل آهي مسئلو سڀني امڪاني مجموعن کي ڳولڻ جو آهي جيڪي ان نمبر جي نمائندگي ڪري سگھن ها جيڪڏهن هر نمبر تي ڪجهه اکر مقرر ڪيا ويا هجن. ھيٺ ڏنل نمبر ڏنل آھي ٽيليفون جي بٽڻ وانگر اھو آھي.

فون نمبر جو خط گڏجاڻيون

ياد رکو ته ڪو هتي 1 خط کي تفويض ناهي ڪيو ويو

مثال

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

جنهن ڏانهن تفويض ڪيل خط "2" آهن ”اي بي سي“ ۽ ڪرڻ "3" آهن ”ڊيف“ تنهن ڪري خطن جو ميلاپ ”اشتهار“ ، ”ae“ ، ”af“ ، “bd” ، “be” ، “bf” ، “cd” ، “ce” ۽ “cf” ٿي سگهي ٿو.

الورورٿم

  1. اعلان ڪيو اي پنگتي حيثيت رکي ٿو ۽ هڪ آرري لائيٽ ۽ اسٽرنگ صف.
  2. اسٽرنگ صف کي قدرون ذخيرو ڪرڻ گھرجن جيئن لفظ ڏنل ڪيبورڊ [10] = {“”، “”، “abc”، “def”، “ghi”، “jkl”، “mno”، “pqrs”، “tuv”، “ وڪسز ”} ؛
  3. پهرين تي ، هڪ خالي قطار کي قطار ۾ ڌڪايو
  4. جڏهن قطار ۾ ڪجهه اقدارون آهن ان کي لوپ تي ختم ڪري ٿو.
  5. قطعي قطار جي قطار جي اگھ کي عارضي تار طور اسٽور ڪيو
  6. جيڪڏهن عارضي تار جي ڊيگهه ن جي برابر برابر آهي (جيڪا انپٽ ويليو جي ڊيگهه آهي) پوءِ
  7. عارضي تارَ جي قيمت لسٽ ۾ شامل ڪريو.
  8. ايلس ، هڪ لوپ کوليو جنهن ۾ اسٽرنگ ويليو ڪيپي = ڪيچس جي طور تي شروعات ڪئي وئي آهي [نمبر [temp.length ()]] ؛
  9. هر ڪيٻي لفظ جي سبسٽنگ ۾ عارضي اسٽرنگ شامل ڪريو (0، 1) ۽ ان کي قطار ۾ ڌڪايو.
  10. ان تي دخل انگيز آهي ، جيستائين قطار ۾ انهي جا قدر آهن.
  11. واپسي جي فهرست.

وضاحت

فرض ڪريو ته اسان کي 23 جي طور تي انپٽ ڏني وئي آهي. پوءِ اسان ان کي انٽيگر ۾ تبديل ڪيو. ۽ ان کي جهڙي طرح عددي انگ ۾ تبديل ڪيو جيترو اسان حاصل ڪيو آهي. ۽ اسان انپٽ ويليو جي انپٽ ويليو ۽ لمبائي کي ان فنڪشن ۾ پاس ڪنداسين جيڪا اسان گڏيل ڪئي آهي.

انهي فنڪشن ۾ اسان پڻ شروع ڪيو پنهنجي ڪيريئرس اسٽرنگ ڪيوريس [10] = {““، “”، “abc”، “def”، “ghi”، “jkl”، “mno”، “pqrs”، “tuv”، “ وڪسز ”}

اسان اهي قيمتون هڪ ٻئي فنڪشن ۾ حاصل ڪيون ٿا جنهن کي getCombination سڏيو ويندو آهي جنهن ۾ اسان محصول حاصل ڪيون ٿا.

تنهنڪري اسان 23 کي هڪ مثال طور وٺون ٿا اهو صف ۾ محفوظ ٿيل آهي = {2، 3} وٽ 0 ، 1 انڊيڪس تي.

تنهنڪري هاڻي هڪ فنڪشن ۾ ، اسان هڪ قطار ۽ هڪ فهرست جو اعلان ڪيو جيڪو اسان جي محصول کي محفوظ ڪرڻ وارو آهي.

اسان کي خالي ڪنڊ کي قطار ۾ ڌڪيندا آهيون
qu = “”؛

۾ داخل ٿيڻ جڏهن ته لوپ: اسان قطار جي محاذ کي ٽمپ ۾ لڳايو ۽ ان کي قطار مان هٽايو ،
عارضي = “”

ھاڻي جيڪڏھن ھڪڙو حصو عمل نہ ڪن ڇو ته قيمتون temp ۽ n کان مختلف آھن. تنهن ڪري اهو ٻيو حصو تي عمل ڪري ٿو جيڪو ڪندو
ڪاپي = temp.length = 0 => نمبر [0] = 2 => ڪيچ [2] = "اي بي سي"
جنهن جي معني ڪاپي = ”اي بي سي“؛

هاڻي اهو لوپ ۾ ٿيندو
۽ قطار کي اي ، بي ۽ سي ۾ شامل ڪيو.

ھاڻي وري اھو پڙتال ڪري ٿو جڏھن (! que.isEmpty ()) ۽ اھو سچ آھي ته اھو جاري رھندو آھي ۽ اھو قطار ۾ قطار جي اڳيان وٺي ٿو جيڪو “ا” ۽ ختم ڪريو.
ڪاپي = temp.length = 1 => نمبر [1] = 3 => ڪيچيون [3] = "دفاع"
تنهن ڪري هاڻي اهو ڊي ، اي ۽ ف سان گڏ ٺهرايو وڃي ۽ ان کي ترتيب سان قطار ۾ pushيرايو وڃي.

ھاڻي وري اھو پڙتال ڪري ٿو جڏھن (! que.isEmpty ()) ۽ اھو سچ آھي ته اھو جاري رھندو آھي ۽ اھو قطار ۾ قطار جي اڳيان وٺي ٿو جيڪو “ب” ھاڻي ختم ڪري ٿو ۽ ب.
ڪاپي = temp.length = 1 => نمبر [1] = 3 => ڪيچيون [3] = "دفاع"
تنهن ڪري هاڻي اهو ڊي ، اي ۽ ف سان گڏ ضم ٿئي ٿو ۽ ان کي قطار ۾ بيهاري ڇڏيو.

ھاڻي وري اھو چڪاس ٿو ڪري جڏھن (! que.isEmpty ()) ۽ اھو سچ آھي ته اھو جاري رھندو آھي ۽ اھو قطار ۾ قطار جي اڳيان وٺي ٿو جيڪو “ج” آھي ۽ سي کي ختم ڪريو.
ڪاپي = temp.length = 1 => نمبر [1] = 3 => ڪيچيون [3] = "دفاع"
تنهن ڪري هاڻي اهو ڊي ، اي ۽ ف سان گڏ ضم ٿئي ٿو ۽ ان کي قطار ۾ بيهاري ڇڏيو.

ھاڻي جيڪڏھن اھو قطار ۾ قطار اڳيان وٺي وڃي ۽ اهو معلوم ٿئي ته ٽائم ڊگھائي اين جي برابر آھي. ۽ عارضي طور تي شامل ڪريو ۽ هر ترتيب سان جيڪو اسان حاصل ڪيو وڃي شامل ڪرڻ وارو آهي.
۽ اسان انهي کي حاصل ڪريون ٿا: (ايڊ ، اي ڪي ، آف ، بي ڊي ، بي ايف ، سي ڊي ، سي ، سي ايف)

تي عملدرآمد

فون نمبر جو خط ميلاپ ڳولڻ لاءِ C ++ پروگرام

#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) جتي N انگن جو تعداد آهي جن کي 3 اکر آهن (ex: 2,3,4،4،7,9) ان کي تفويض ڪيو ويو آهي ۽ M انگن اکرن جو تعداد آهي جن کي XNUMX اکر آهن (ex: XNUMX،XNUMX) ان کي تفويض ڪيو ويو آهي.

خلائي پيچيدگي

اي (3)N × 4M) جتي N انگن جو تعداد آهي جن کي 3 اکر آهن (ex: 2,3,4،4،7,9) ان کي تفويض ڪيو ويو آهي ۽ M انگن اکرن جو تعداد آهي جن کي XNUMX اکر آهن (ex: XNUMX،XNUMX) ان کي تفويض ڪيو ويو آهي.