题意:
方法:
模拟
思路:模拟。
首先,反转字符串;然后,遍历字符串,如果是字符,则合并单词;如果是第一个空格,则将单词反转、大小写字母切换,并且覆盖原字符串。最后返回原字符串即可。
class Solution { public: string trans(string s, int n) { reverse(s.begin(),s.end());//反转字符串 string x=""; int flag=0; for(int i=0;i<n;i++){//遍历字符串 if(s[i]!=' '){//如果是字符,则合并单词 x+=s[i]; flag=1; }else if(flag){//如果是第一个空格,则将单词反转、大小写切换,并且覆盖原字符串 flag=0; int len=x.size(); for(int j=0;j<len;j++){ if(islower(x[j])){ x[j]-=32; }else{ x[j]+=32; } s[i-1-j]=x[j]; } x=""; } } if(flag){//最后的一个单词的判断 flag=0; int len=x.size(); for(int j=0;j<len;j++){ if(islower(x[j])){ x[j]-=32; }else{ x[j]+=32; } s[n-1-j]=x[j]; } x=""; } return s; } };
时间复杂度:空间复杂度: