709. 转换成小写字母
难度简单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’ 。。。
根据经验,函数确实存在,应该是参数类型没有匹配上。
感谢https://blog.csdn.net/u011089523/article/details/48499023?ops_request_misc=&request_id=&biz_id=102&utm_term=mo%2520match%2520function%2520for%2520call%2520to%2520&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-48499023.pc_search_result_no_baidu_js
提供了三种解决方法:
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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)