โจทย์
ให้สตริง ต้องการพิมพ์ออกมา โดยตัวอักษรที่เรียงติดกัน (เช่น 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