我試圖使用isLarger()
來比較兩個字符串整數,如果a
大於b
,則返回true。比較字符串中的字符(通過「=」運算符修改)
如果我輸入31232在main()
,getPalindrome()
(inputString = 「31232」),將其轉換爲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/
任何問題'changedString> inputString'? – juanchopanza
@ Manu343726:我不會說它做得好。在C++中遍歷事物的正確方法是使用迭代器! –
當你有一套完美的比較運算符時,你爲什麼要爲'std :: string'實現自己的比較? –