600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 一个字符串吧大写字母转换为小写字母

一个字符串吧大写字母转换为小写字母

时间:2019-07-26 11:51:59

相关推荐

一个字符串吧大写字母转换为小写字母

709. 转换成小写字母

难度简单140收藏分享切换为英文接收动态反馈

实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。

示例 1:

输入:"Hello"输出:"hello"

示例 2:

输入:"here"输出:"here"

示例3:

输入:"LOVELY"输出:"lovely"

通过次数59,537提交次数78,268

这道题目其实一点也不难,方法有很多,我选择了使用API,tansform():

stringrets=str;

transform(rets.begin(),rets.end(),rets.begin(),tolower);

然后报错了。。。no matching function for call to ‘transform’ 。。。

根据经验,函数确实存在,应该是参数类型没有匹配上。

感谢/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);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。