难度简单140收藏分享切换为英文接收动态反馈
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。
示例 1:
输入: "Hello" 输出: "hello"
示例 2:
输入: "here" 输出: "here"
示例 3:
输入: "LOVELY" 输出: "lovely"
通过次数59,537提交次数78,268
这道题目其实一点也不难,方法有很多,我选择了使用API,tansform():
string rets=str;
transform(rets.begin(),rets.end(),rets.begin(),tolower);
然后报错了。。。no matching function for call to ‘transform’ 。。。
根据经验,函数确实存在,应该是参数类型没有匹配上。
提供了三种解决方法:
1.因为在全局命名空间中有实现的函数(而不是宏),所以我们明确命名空间,这并不是总奏效,但是在我的g++环境中没有问题:
transform(str.begin(), str.end(), str.begin(), ::toupper);
2.自己写一个函数出来—wraper
inline char charToUpper(char c)
{
return std::toupper(c);
}
3.强制转化:将toupper转换为一个返回值为int,参数只有一个int的函数指针。
transform(str.begin(), str.end(), str.begin(), (int (*)(int))toupper);
这里采用了第三种:正确可以通过刷题的:
class Solution {
public:
string toLowerCase(string str) {
string rets=str;
transform(rets.begin(),rets.end(),rets.begin(),(int (*)(int))tolower);
return rets;
}
};
第一种也是可以的,亲测:transform(rets.begin(),rets.end(),rets.begin(),::tolower);