blog

バージョン番号を比較する

質問に従って、'.各サブバージョン番号の2つのバージョンを分割し、左から右へ1つずつ比較する場合は、サブバージョン番号の数のバージョンは、他よりも、0サブバージョンとバージョンの少ないサブバージョンで...

Apr 23, 2020 · 2 min. read

質問に従って、'.2つのバージョンの各サブバージョン番号を分割し、左から右に1つずつ比較します。 一方のバージョンのサブバージョン番号の数が他方より多い場合、サブバージョンの数が少ない方のバージョンを0で表します。こうすることで、常に2つのバージョンのすべてのサブバージョンを比較することができます。

分割サブバージョンは、配列に格納されているサブバージョンに分割ダブルポインタを使用することができます、配列のサブバージョンの2つのバージョンに分かれて格納され、1つずつ配列を比較し、それらが背面に等しい場合は、それ以外の結果を返します。

配列が別の配列よりも大きい場合は、0と他の配列の残りの部分を比較する大きい方の配列の現在の要素を小さくし、比較のサイズまたは2つの配列が終了するまで比較を続行すると、2つのバージョン番号が同じであることを示す、0のリターンでオーバーしています。

コードは以下の通り:

class Solution {
public:
 int compareVersion(string version1, string version2) {
 vector<int> v1, v2;
 int i = 0;
 for(; i < version1.size(); ++i) {
 int j = i;
 while(j < version1.size() && version1[j] != '.') { //配列v1に格納されているサブバージョン番号を分割するためのダブルポインタ。
 ++j;
 }
 string subVer = version1.substr(i, j - i);
 v1.push_back(atoi(subVer.c_str()));
 i = j;
 }
 for(i = 0; i <version2.size(); ++i) {
 int j = i;
 while(j < version2.size() && version2[j] != '.') {
 ++j;
 }
 string subVer = version2.substr(i, j - i);
 v2.push_back(atoi(subVer.c_str()));
 i = j;
 }
 for(int i = 0; i < min(v1.size(), v2.size()); ++i) {
 if(v1[i] > v2[i]) {
 return 1;
 } else if(v1[i] < v2[i]) {
 return -1;
 }
 }
 if(v1.size() < v2.size()) {
 for(int i = v1.size(); i < v2.size(); ++i) {
 if(0 < v2[i]) { //もしv1のサイズがv2のサイズより小さければ、v1の足りない部分が0と比較され、v2が0と比較される。[i]比較、後者のサブバージョン番号が0であることを示す
 return -1;
 }
 }
 }
 if(v1.size() > v2.size()) {
 for(int i = v2.size(); i < v1.size(); ++i) {
 if(v1[i] > 0) {
 return 1;
 }
 }
 }
 return 0;
 }
};
Read next

eclipse Theia ドキュメント - 翻訳

最初のプラグインを作成します。例として、Hello Worldコマンドの "Hello world!"通知を表示するために登録します。この記事では、必要なステップをすべて説明します。 Theiaは拡張可能なIDEです。拡張機能とはIDEをカスタマイズする方法だと聞いたことがあるかもしれません。プラグインは、Theia の拡張モデルに最近追加されたものです。ここでは、マテリア...

Apr 22, 2020 · 2 min read