Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ลบตัวเลขซ้ำในตัวเลขที่กำหนดโดยใช้ C++


ในบทความนี้ เราได้รับตัวเลข n และเราจำเป็นต้องลบตัวเลขซ้ำในตัวเลขที่กำหนด

Input: x = 12224
Output: 124

Input: x = 124422
Output: 1242

Input: x = 11332
Output: 132

ในปัญหาที่กำหนด เราจะดำเนินการผ่านตัวเลขทั้งหมดและนำตัวเลขที่ซ้ำกันออก

แนวทางในการหาทางออก

ในแนวทางที่กำหนด เราจะดูตัวเลขทั้งหมดของ n จากขวาไปซ้ายตอนนี้ เราผ่านตัวเลขของ n โดยใช้ mod ของ n ด้วย 10 แล้วหาร n ด้วย 10 ตอนนี้ตัวเลขปัจจุบันของเราคือ n mod 10 เราตรวจสอบด้วยตัวเลขก่อนหน้า หากตัวเลขเท่ากัน เราจะข้าม 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 และภาษาอื่นๆ เราหวังว่าคุณจะพบว่าบทความนี้มีประโยชน์