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