比较字符串中的字符(由"="运算符修改)
Compare character in string (which is modified by "=" Operator)
我正在尝试使用 isLarger()
来比较两个字符串整数,如果a
大于 b
则返回 true。
如果我在main()
中输入 31232 (inputString="31232"(,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/
isLarger
函数中的逻辑不正确。对于等长的字符串,如果 a
中的任何字符大于 b
中的等效字符,则返回 true。
我建议改进,但我不确定你的意图是什么。我只知道你没有在你编写的代码中捕获它。
正如 John 所建议的,如果 a 中的任何字符大于 b 中的等效字符,则 isLarger 返回。您可以简单地使用a > b
来完成这项工作。如果你想练习,这是正确的方法:
//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;
else if(a[i] < b[i])
return false;
}
return false; //strings are equal.
}
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 为什么比较运算符如此快速
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- C++ 运算符修改/元编程策略,用于不那么冗长的语法
- 通过运算符使用标量参数重写来修改类成员
- 在 c++ 中,如何修改运算符以便在同一语句中连续调用它两次
- 如何在不修改C 中的LHS参数的情况下实现` `运算符
- C++将索引器运算符添加到现有类而不进行修改
- 是否可以在 C++ 中使用运算符重载来更改(未修改的)包含函数的含义
- 比较字符串中的字符(由"="运算符修改)
- 如何在不修改操作数的情况下使用运算符重载链
- 使用我的API修改新运算符
- 由算术运算符成员函数修改的动态数组的复制构造函数
- 在传递给函数的 char 指针上使用下标运算符不会修改值。为什么?
- ++和+=运算符不修改原始对象是否"incorrect behaviour"?
- C++ 重载运算符不修改原始对象(通过引用传递)
- 插入运算符 (<<) 是否修改C++值?