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

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

ในบทความนี้ เราได้รับตัวเลข 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 หวังว่าจะเป็นประโยชน์