C ++中的回文扫描仪

时间:2018-06-30 20:29:10

标签: c++

在C ++中我的回文“扫描仪”出现了一些问题。

    #include <iostream>
    #include <string.h>
    #include <string>


    using namespace std;

    void start() {
        string eingabe;

        string umkehrung;
    cout << "Bitte geben Sie das Wort ein, von welchem getestet werden soll, ob es ein Palindrom ist!" << endl;
    cin >> eingabe;
    eingabe = ' ' + eingabe;
    for (int i = eingabe.length(); i >= 0; i--) {
        umkehrung = umkehrung + eingabe[i];

    }
    if (umkehrung == eingabe) {
        cout << "Das Wort '" + eingabe + "' ist ein Palindrom!" << endl;

    }
    else {
        cout << "Das Wort '" + eingabe + "' ist kein Palindrom!" << endl;
        cout << eingabe << endl;
        cout << umkehrung << endl;
    }


}

int main() {
    start();
    return 0;
}

它反转字符串输入(Eingabe ---> Umkehrung),然后检查它们是否相同。但是无论如何,它总是说它们不一样,即使它们看起来一样(我在这里输出它们:

cout << eingabe << endl;
cout << umkehrung << endl;

2 个答案:

答案 0 :(得分:0)

您可以使用标准库提供的算法来反转阵列。看起来像这样:

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

void start() {
    string eingabe;
    string umkehrung;

    cout << "Bitte geben Sie das Wort ein, von welchem getestet werden soll, ob es ein Palindrom ist!" << endl;
    cin >> eingabe;

    umkehrung = eingabe;
    std::reverse(umkehrung.begin(), umkehrung.end());

    if (umkehrung == eingabe) {
        cout << "Das Wort '" + eingabe + "' ist ein Palindrom!" << endl;

    }
    else {
        cout << "Das Wort '" + eingabe + "' ist kein Palindrom!" << endl;
        cout << eingabe << endl;
        cout << umkehrung << endl;
    }
}

int main() {
    start();
    return 0;
}

答案 1 :(得分:0)

您甚至不必费心创建反向字符串;只需使用反向迭代器和private ArrayList<JComboBox<String>> setTextBoxList; // basic initialization public void populateList() { String str[] = {"one", "two"}; for(int i=0; i<2; i++) { JComboBox<String> jcb = new JComboBox<String>(str); setTextBoxList.add(new JComboBox<String>(str)); jcb.addActionListener(this); } } public void actionPerformed(ActionEvent e) { Object o = e.getSource(); if(o instanceof JComboBox) { // here's where I'd like to see which box was just changed System.out.println("change index " + setTextBoxList.indexOf((JComboBox)o) ); } }

std::equal

该程序will indeed produce

#include <string>
#include <iostream>
#include <algorithm>

void check (const std::string& s) {
    auto s_is_a_palindrome = std::equal(s.begin(), s.end(), s.rbegin());
    std::cout << '"' << s << "\" is " << (s_is_a_palindrome ? "" : "not ")
              << "a palindrome\n";
}

int main() {
    check("hello olleh");
    check("hello, world");
}

注意:您可以停止以半角进行比较,即"hello olleh" is a palindrome "hello, world" is not a palindrome 应该也可以代替s.begin() + s.length() / 2了。比较另一半只是反向进行相同的比较。