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

โปรแกรม C++ หาสตริงหลังเพิ่ม 'a' ให้ไม่เป็นพาลินโดรม


คำอธิบายปัญหา

สมมติว่าเรามีสตริง S ประกอบด้วยตัวอักษรภาษาอังกฤษพิมพ์เล็ก ต้องแทรกตัวอักษร 'a' เข้าไปใน S ทั้งหมด 1 ตัว หลังแทรกแล้วถ้าสามารถทำให้ S ไม่ใช่พาลินโดรมได้ ให้คืนสตริงนั้น มิฉะนั้นคืน "impossible"

ตัวอย่าง: S = "bpapb" ผลลัพธ์คือ "bpaapb"

ขั้นตอนการแก้ปัญหา

ถ้า S + "a" ไม่ใช่พาลินโดรม: คืนค่า S + 'a'
มิฉะนั้นถ้า "a" + S ไม่ใช่พาลินโดรม: คืนค่า 'a' + S
มิฉะนั้น: คืนค่า "Impossible"

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

#include <bits/stdc++.h>
using namespace std;

bool p(const string& s) {
    for (int i = 0; i < s.size() / 2; i++)
        if (s[i] != s[s.size() - 1 - i])
            return false;
    return true;
}

string solve(string S) {
    if (!p(S + 'a'))
        return S + 'a';
    else if (!p('a' + S))
        return 'a' + S;
    else
        return "Impossible";
}

int main() {
    string S = "bpapb";
    cout << solve(S) << endl;
}

อินพุต

"bpapb"

เอาต์พุต

bpapba