Python
 Computer >> コンピューター >  >> プログラミング >> Python

C++で文字列を乗算する


文字列として2つの数字があるとします。それらを乗算し、結果を文字列で返す必要があります。したがって、数値が「26」と「12」の場合、結果は「312」になります

これを解決するには、次の手順に従います-

  • 2つの引数xとyを取ると、xがyを除算することを示します
  • x<-Infinityおよびy=1の場合、無限大を返します
  • a:=| x |、b:=| y |およびans:=0
  • while a – b> =0
    • p:=0
    • while a –(左シフトb(左シフト1 p回))> =0
      • p:=p + 1
    • a:=a –(左シフトb、p回)
    • ans:=ans+左シフト1p回
  • x> 0が真で、y> 0も真の場合は、ansを返します。それ以外の場合は、(– ans)を返します。
例(C ++)

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
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 ++で文字列をトークン化しますか?

    最初の方法は、文字列ストリームを使用して、スペースで区切られた単語を読み取ることです。これは少し制限されていますが、適切なチェックを提供すれば、タスクはかなりうまくいきます。 例 #include <vector> #include <string> #include <sstream> using namespace std; int main() {    string str("Hello from the dark side");    string tmp; // A string

  2. PythonのUnicode文字列

    Pythonの通常の文字列は内部で8ビットASCIIとして保存されますが、Unicode文字列は16ビットUnicodeとして保存されます。これにより、世界中のほとんどの言語の特殊文字を含む、より多様な文字セットが可能になります。 Unicode文字列の扱いを次のように制限します- 例 #!/usr/bin/python print u'Hello, world!' 出力 上記のコードを実行すると、次の結果が生成されます- Hello, world! ご覧のとおり、生の文字列がプレフィックスrを使用するのと同じように、Unicode文字列はプレフィックスuを使用します。