কম্পিউটার টিউটোরিয়াল

C++-এ স্ট্রিং গুণফল


मान लीजिए हमारे पास दो संख्याएं स्ट्रिंग के रूप में हैं। हमें उन्हें गुणा करना है और परिणाम को भी स्ट्रिंग में वापस करना है। इसलिए यदि संख्याएं "26" और "12" हैं, तो परिणाम "312" होगा

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −

  • दो आर्गुमेंट्स x और y लेना जो दर्शाता है x, y को विभाजित करता है
  • यदि x < -Infinity और y = 1, तो इन्फिनिटी लौटाएं
  • a := |x|, b := |y| और ans := 0
  • जब तक a - b >= 0
    • p := 0
    • जब तक a - (b को 1 p बार लेफ्ट-शिफ्ट करके लेफ्ट-शिफ्ट किया गया) >= 0
      • p := p + 1
    • a := a - (b को p बार लेफ्ट शिफ्ट)
    • ans := ans + 1 को p बार लेफ्ट शिफ्ट
  • यदि x > 0 सत्य है और y > 0 भी सत्य है, तो ans लौटाएं, अन्यथा (- ans) लौटाएं

उदाहरण (C++)

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें −

#include  using namespace std; class Solution { public:    string multiply(string num1, string num2); }; string Solution::multiply(string nums1, string nums2) {    int n = nums1.size();    int m = nums2.size();    string ans(n + m, '0');    for(int i = n - 1; i>=0; i--){       for(int j = m - 1; j >= 0; j--){          int p = (nums1[i] - '0') * (nums2[j] - '0') + (ans[i + j + 1] - '0');          ans[i+j+1] = p % 10 + '0';          ans[i+j] += p / 10 ;       }    }    for(int i = 0; i < m + n; i++){       if(ans[i] !='0')return ans.substr(i);    }    return "0"; } main(){    Solution ob;    cout << ob.multiply("28", "25"); }

इनपुट

"26" "12"

आउटपुट

"312"

  1. C++-এ কেস-ইনসেনসিটিভ স্ট্রিং কম্পারিজন

  2. দুই স্ট্রিং কনক্যাটেনেট (Concatenate) করার C++ প্রোগ্রাম

  3. C++-এ স্ট্রিং টোকেনাইজ (Tokenize) করা

  4. পাইথনে ইউনিকোড স্ট্রিং