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

C ++を使用して、指定された番号の繰り返し桁を削除します


この記事では、番号nが与えられており、指定された番号の繰り返し桁を削除する必要があります。

Input: x = 12224
Output: 124

Input: x = 124422
Output: 1242

Input: x = 11332
Output: 132

与えられた問題では、すべての数字を調べて、繰り返される数字を削除します。

解決策を見つけるためのアプローチ

与えられたアプローチでは、nのすべての桁を右から左に調べます。 nのmodを10で取り、次にnを10で除算することにより、nの桁を調べます。現在の桁はnmod10です。前の桁で確認します。数字が等しい場合は、ここでnをトラバースします。それらが類似していない場合は、この数字を新しい番号に追加し、前の数字を現在の数字に変更して、ループを続行します。

#include <bits/stdc++.h>

#define MOD 1000000007

using namespace std;

int main() {
   int n = 1222333232; // given n
   int new_n = 0; // new number
   int po = 1; // will b multiple of ten for new digits
   int prev = -1; // previous digit
   int curr; // current digit
   while(n) {
      curr = n % 10;
      if(prev != curr) { // if a digit is not repeated then we go in this block
         new_n = new_n + (curr * po); // we add a new digit to new_n
         po *= 10;
         prev = curr;
      }
      n /= 10;
   }
   cout << new_n << "\n";
   return 0;
}

出力

123232

上記のコードの説明

上記のアプローチでは、前の桁と現在の桁が一致しない場合、nの桁を単純にトラバースし、そのような桁を新しい番号に追加します。また、桁が追加されると、poも増加します。現在の数字と前の数字が一致する場合、現在は数字の位置に使用されています。このブロックは実行せず、nが0になるまでループを続行します。

結論

この記事では、特定の番号の繰り返し数字を削除する問題を解決します。また、この問題のC ++プログラムと、この問題を解決するための完全なアプローチ(Normal)についても学びました。同じプログラムを、C、java、python、その他の言語などの他の言語で作成できます。この記事がお役に立てば幸いです。


  1. C++で特定の数の数字を使用して形成できる最大数を見つけます

    n桁の数字があるとします。その数のすべての桁を使用して取得できる最大数を見つける必要があります。したがって、番号が339625の場合、最大数は965332になります。 この問題から、数字を昇順ではなく簡単に並べ替えてから印刷できることがわかります。しかし、より効率的な方法でこれを解決できます。サイズ10の配列を1つ作成して各桁の頻度を格納し、それに応じて9から0までの数値を出力できます。 例 #include <iostream> #include <string> using namespace std; int maxNumFromNum(int num) { &

  2. 指定された数値の桁を合計するC++プログラム

    これは、C++言語で桁の合計を計算する例です。 例 #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "Enter the number : ";    cin >> x;    while (x != 0) {       s = s + x % 10;       x = x / 10;