2017-03-15 16 views
0

整数や全体的なコードを扱う技術に関する質問はほとんどありません。整数を扱う最も良い方法は?

たとえば、整数の数値を変更またはチェックする必要がある場合は、数字の数字をベクターに保存してから操作し、必要に応じて戻しますが、少し実用的ではないと思います。

整数からゼロを削除し、ゼロ以外の同じ番号を返す関数を書く必要があったという作業がありました。

int removeZeros(int n) { 
    std::vector<int> v; 

    while(n != 0) { 
     v.push_back(n%10); 
     n /= 10; 
    } 

    for(int i = 0; i < v.size(); i++) { 
     if(v[i] == 0) { 
      v.erase(v.begin() + i); 
      i--; 
     } 
    } 

    for(int i = v.size() - 1; i >= 0; i--) { 
     n *= 10; 
     n += v[i]; 
    } 
    return n; 
} 

このコードはうまく動作しますが、このコードはうまく機能しているかどうかはわかりません。

このメソッドのメソッドが十分に効率的だと思いますか?または整数を扱う(または変更する)方が便利で便利な方法はありますか?

もっと効率的なコーダーになるためのヒントを教えてもらえますか?ただ数学 -

おかげ

+0

コーディングスタイルに関する質問がCodeReview.stackexchange.comにより適切であるため、この質問を議論の対象外としています。 – Barmar

答えて

1

あなたはvector sですべてを使用せずにこれを行うことができます。

long int NoZeros(long int num) { 
    bool sign = num < 0; 

    long int ret = 0, running = 1; 
    while (num) { 
     if (num % 10) { 
      ret += running * (num % 10); 
      running *= 10; 
     } 
     num /= 10; 
    } 
    return sign?-num:num; 
} 
関連する問題