题意:
方法:
模拟
思路:模拟。
首先,反转字符串;然后,遍历字符串,如果是字符,则合并单词;如果是第一个空格,则将单词反转、大小写字母切换,并且覆盖原字符串。最后返回原字符串即可。
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;
}
};
时间复杂度:
空间复杂度:![]()



京公网安备 11010502036488号