ในบทความนี้ เราได้รับตัวเลข n และต้องลบเลขซ้ำที่ติดกันในตัวเลขที่กำหนด
Input: x = 12224 Output: 124 Input: x = 124422 Output: 1242 Input: x = 11332 Output: 132
ในปัญหานี้ เราจะเดินผ่านหลักทุกหลักและลบเลขที่ซ้ำติดกัน
แนวทางแก้ปัญหา
ในวิธีนี้ เราจะเดินผ่านหลักของ n จากขวาไปซ้าย โดยการหา mod 10 แล้วหาร 10 ต่อไป หลักปัจจุบันคือ n mod 10 เราเช็คกับหลักก่อนหน้า หากเท่ากัน เราข้ามไป หากไม่เท่ากัน เราเพิ่มหลักนี้เข้าไปในตัวเลขใหม่ เปลี่ยนหลักก่อนหน้าเป็นหลักปัจจุบัน และทำต่อ
ตัวอย่างโค้ด
#include <bits/stdc++.h>
#define MOD 1000000007
using namespace std;
int main() {
int n = 1222333232; // n ที่กำหนด
int new_n = 0; // ตัวเลขใหม่
int po = 1; // จะเป็นตัวคูณ 10 สำหรับหลักใหม่
int prev = -1; // หลักก่อนหน้า
int curr; // หลักปัจจุบัน
while (n) {
curr = n % 10;
if (prev != curr) { // ถ้าหลักไม่ซ้ำ เราทำในบล็อกนี้
new_n = new_n + (curr * po); // เพิ่มหลักใหม่เข้าไปใน new_n
po *= 10;
prev = curr;
}
n /= 10;
}
cout << new_n << "\n";
return 0;
}
ผลลัพธ์
123232
คำอธิบายโค้ด
ในวิธีนี้ เราเดินผ่านหลักของ n ตอนที่หลักก่อนหน้าและหลักปัจจุบันไม่ตรงกัน เราเพิ่มหลักนั้นเข้าไปในตัวเลขใหม่ และเพิ่ม po (สำหรับตำแหน่งหลัก) หากหลักปัจจุบันและก่อนหน้าตรงกัน เราข้ามบล็อกนี้และวนลูปต่อจน n กลายเป็น 0
สรุป
ในบทความนี้ เราแก้ปัญหาการลบเลขซ้ำติดกันในตัวเลข เรียนรู้โปรแกรม C++ และแนวทางการแก้ปัญหา สามารถเขียนในภาษาอื่นได้เช่น C, Java, Python หวังว่าจะเป็นประโยชน์