我正在尝试使用isLarger()
比较两个字符串整数并a
在大于时返回 true b
。
如果我输入 31232 (inputString="31232")main()
,getPalindrome()
将其转换为 31213 (changedString="31213"),但isLarger(changedString,inputString)
结果始终为真。
但是如果我输入 12345(转换为 12321),结果始终是错误的。
我认为我的代码中存在对 C++ 或逻辑疏忽的一些基本误解,但我无法弄清楚。我想问题可能来自比较本身或output[lg-1-i]=input[i];
在getPalindrome()
我试图用output.replace(lg-1-i,1,1,input[i]);
但没有运气。
任何人都可以帮助找出问题所在吗?谢谢你。
#include <iostream>
#include <string>
using namespace std;
//Compare if the string integer, return true if a > b
bool isLarger(string a, string b) {
if (a.length() != b.length()) return a.length() > b.length();
for(size_t i=0;i<a.length();i++) if (a[i] > b[i]) return true;
return false;
}
//Copy LHS of the string to RHS
string getPalindrome(string input) {
string output=input;
int lg = input.length();
int half_lg = (int)lg/2;
for (int i=0;i<half_lg;i++) {
output[lg-1-i]=input[i];
}
return output;
}
int main() {
string inputString;
cin >> inputString;
string changedString = getPalindrome(inputString);
if (isLarger(changedString,inputString))
cout << changedString<< "\n";
return 0;
}
===========
谢谢大家帮助我。我是 C++ 新手,很抱歉问了这么愚蠢的问题。对任何好奇的人。我写的代码:http ://www.spoj.com/problems/PALIN/