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