ในปัญหานี้ เราได้รับสตริงของอักขระและเราต้องพิมพ์สตริงเดียวกันในลักษณะที่ว่าหากอักขระสองตัวหรือมากกว่าต่อเนื่องกัน ให้พิมพ์รวมกันเป็นบรรทัดเดียว มิฉะนั้นให้พิมพ์เป็นบรรทัดต่างๆ เช่น มีตัวแบ่งบรรทัด
มาดูตัวอย่างเพื่อทำความเข้าใจแนวคิดกันดีกว่า
Input : abcxstk Output : abc x st k
คำอธิบาย − ตั้งแต่ abc อยู่ในลำดับที่พิมพ์เป็นบรรทัด แล้วก็มา x ซึ่งไม่เรียงตามลำดับ เราจึงเพิ่มตัวแบ่งบรรทัดตรงนี้ ต่อไปคือ s ซึ่งไม่ใช่ลำดับที่มี x ดังนั้นเราจึงเพิ่มการแยกบรรทัด ถัดไปคือ t ซึ่งอยู่ในลำดับโดยที่ s พิมพ์ตามลำดับ ถัดไปคือ k ซึ่งไม่อยู่ในลำดับกับ t ดังนั้นเราจึงเพิ่มตัวแบ่งบรรทัด
ที่นี่ เราจะตรวจสอบองค์ประกอบที่มีองค์ประกอบก่อนหน้าในสตริง ถ้าเรียงตามลำดับก็พิมพ์ตามปกติ มิฉะนั้น พิมพ์องค์ประกอบด้วย ตัวแบ่งบรรทัด
ตัวอย่าง
ตอนนี้ มาสร้างโปรแกรมตามตรรกะนี้กัน
#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