在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;
答案 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
#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
了。比较另一半只是反向进行相同的比较。