尝试刷新我的编码。回文练习给我一个问题。用谷歌搜索我的错误,但无法修复。

时间:2018-08-11 14:51:46

标签: c++ string oop c++11 palindrome

我正在从事c ++练习,说实话,关于字符串的知识有点模糊,可能是为什么这不起作用。我已经在语法上忘记了很多,但是总体上我对OOP有很好的基础理解。只是想重新陷入困境。我也知道我的一致性与std ::很奇怪,然后在cin haha​​之类的地方省略它。只是在胡闹。谢谢你的帮助。

#include <iostream>
#include <string>
std::string reverse(std::string s);
using namespace std;

int main(){

        std::string s;
        cin>>s;

        std::string n = reverse(s);
        if(n == s){
                std::cout<<"plindrome"endl;
        }
}


string reverse(string s){

        int n = s.length();

        for(int i = 0; i<n/2; i++){
                swap(s[i], s[n-1-1])
        }

        return s;

}

2 个答案:

答案 0 :(得分:0)

swap(s[i], s[n-1-1])

仔细查看第二个参数。

答案 1 :(得分:0)

#include <iostream>
#include <string>
std::string reverse(std::string s);
using namespace std;

string reverse(string s) {

    int n = s.length();

    for (int i = 0; i<n / 2; i++) {
        swap(s[i], s[n - i - 1]);
    }

    return s;

}

int main() {

    std::string s;
    cin >> s;

    std::string n = reverse(s);
    if (n == s) {
        std::cout << "plindrome" << endl;
    }
}

只是固定了交换线,所以它应该是s [i]和s [n-i-1]以及打印时的语法错误