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

พิมพ์ตัวอักษรที่ติดกันในบรรทัดเดียวกันใน C++

โจทย์

ให้สตริง ต้องการพิมพ์ออกมา โดยตัวอักษรที่เรียงติดกัน (เช่น a,b,c หรือ c,b,a) พิมพ์ในบรรทัดเดียวกัน ตัวที่ไม่ติดกัน ขึ้นบรรทัดใหม่

ตัวอย่าง: "abcxstk" → abc (บรรทัด1), x (บรรทัด2), st (บรรทัด3), k (บรรทัด4)

วิธีแก้ปัญหา

ลูปผ่านสตริง เปรียบเทียบตัวปัจจุบันกับตัวก่อนหน้า:

  • ถ้า diff == 1 หรือ -1 (ติดกันใน ASCII) → พิมพ์ต่อกัน
  • มิฉะนั้น → พิมพ์ newline แล้วพิมพ์ตัวปัจจุบัน

ตัวอย่างโค้ด C++

#include <iostream>
using namespace std;

int main() {
    string str = "stukfrpq";
    cout << str[0];
    for (int i = 1; str[i] != '\0'; i++) {
        if ((str[i] == str[i-1] + 1) || (str[i] == str[i-1] - 1))
            cout << str[i];
        else
            cout << "\n" << str[i];
    }
    return 0;
}

ผลลัพธ์

stu
k
f
r
pq