isLarger()
을 사용하여 두 문자열 정수를 비교하고 a
이 b
보다 큰 경우 true를 반환하려고합니다.문자열에서 문자 비교 ("="연산자로 수정 됨)
내가 입력 getPalindrome()
main()
에서 31,232 (inputString = "31232")를 31213로 변환하면 (changedString = "31213")하지만, isLarger(changedString,inputString)
이 지속적으로 사실로 밝혀졌습니다.
그러나 12345 (12321로 변환)를 입력하면 일관되게 false가됩니다.
내 코드에는 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/
아무것도 : 연습하려는 경우 , 여기에 올바른 방법인가? – juanchopanza
@ Manu343726 : 나는 그것을 훌륭하게 부르지 않을 것이다. C++에서 물건을 트래버스하는 올바른 방법은 반복자입니다! –
비교 연산자가 완벽하게 좋은 경우'std :: string'에 대한 자체 비교를 구현하는 이유는 무엇입니까? –