C++で文字列を乗算する
これを解決するには、次の手順に従います-
- 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)を返します。
理解を深めるために、次の実装を見てみましょう-
#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"
-
C ++で文字列をトークン化しますか?
最初の方法は、文字列ストリームを使用して、スペースで区切られた単語を読み取ることです。これは少し制限されていますが、適切なチェックを提供すれば、タスクはかなりうまくいきます。 例 #include <vector> #include <string> #include <sstream> using namespace std; int main() { string str("Hello from the dark side"); string tmp; // A string
-
PythonのUnicode文字列
Pythonの通常の文字列は内部で8ビットASCIIとして保存されますが、Unicode文字列は16ビットUnicodeとして保存されます。これにより、世界中のほとんどの言語の特殊文字を含む、より多様な文字セットが可能になります。 Unicode文字列の扱いを次のように制限します- 例 #!/usr/bin/python print u'Hello, world!' 出力 上記のコードを実行すると、次の結果が生成されます- Hello, world! ご覧のとおり、生の文字列がプレフィックスrを使用するのと同じように、Unicode文字列はプレフィックスuを使用します。