问题描述
好吧,我应该返回一个单词的中间字符。如果单词的长度是奇数,则返回中间字符。如果单词的长度是偶数,则返回中间的2个字符。例如,“ test” =>“ es”或“ testing” =>“ t”。 这就是我写的=>
#include <iostream>
std::string get_middle(std::string input)
{
if (input.length() % 2 == 0) {
return input.substr(1,2);
} else {
return input.substr(1,1);
}
};
int Main() {
get_middle("test");
get_middle("testing");
}
解决方法
看看您的代码,它是否返回中间字符(无论哪种情况)?否,因为您说input.substr(1,..)
会返回秒字符。
您要的是奇怪的情况
return input.substr(input.length()/2,1);
我会让你解决偶数问题。
实际上,如果您非常聪明,则对于偶数和偶数情况都可以使用相同的公式。
,我猜测问题是您没有得到中间字符(请下次说明问题)。第一个参数应该是您想要的子字符串中第一个字符的索引,即input.length()/ 2
,首先,您的主要方法不正确。请将“ Main”更改为“ main”并返回一些整数值。
这是完成任务的方式。
#include <iostream>
using namespace std;
std::string get_middle(std::string input)
{
if (input.length() % 2 == 0) {
return input.substr((input.length() / 2)-1,2);
}
else {
return input.substr(input.length()/2,1);
}
};
int main() {
//cout<<get_middle("test")<<endl;
cout<<get_middle("testing")<<endl;
cout << get_middle("test") << endl;
return 0;
}
输出:
t
es
现在,第一个输出用于奇数字符串,第二个输出用于偶数字符串。