1. ホーム
  2. c++

[解決済み】C++ アルゴリズム的に単純な再帰的回文チェッカー

2022-01-30 17:59:37

質問

私は文字列回文チェッカーを書きましたが、講師は必要以上に複雑だと言っています。同じようなスレッドを読んだり、ググったりしましたが、これより少ないステップで動作させる方法について、完全に行き詰っています...。

void isPal(string str){
int length = str.length();
if(length <= 1) cout << "Palindrome" << endl;//check for zero or one digit numbers
else if(str.at(0) == str.at(length -1)) {
    str = str.substr(1, (length - 2));
    isPal(str);}
else cout << "Not a palindrome." << endl;{
    cin >> str;}

解決方法は?

これを確認してください。

int is_pal(int start, int end, string &str)
{
    if (start >= end)
        return 1;
    if (str[start] != str[end])
        return 0;
    return is_pal(++start, --end, str);   
}

mainからメソッドを呼び出す。もしそれが役に立ったら教えてください... :)