- 1、转换大小写
- 2、用『双指针』进行获取结果
- 吐槽:但是,这个题目的测试样例,似乎默认是一个空格,没有考虑多个空格的情况
class Solution {
public:
string trans(string s, int n) {
// write code here
if( n<=0 )
{
return s;
}
int loop=n;
//转换模块
while( loop-- )
{
if( islower( s[loop] ) )
{
s[loop]=s[loop]-' ';
}
else if( isupper( s[loop] ) )
{
s[loop]=s[loop]+' ';
}
}
//双指针
int Left=n-1;
int Right=n;
string res;
while( Left>=0 )
{
//不等于
if( ' '!=s[Left] )
{
--Left;
}
else
{
if( Right-Left>1 )
{
string temp=s.substr( Left+1, Right-Left-1 );
res+=temp;
}
Right=Left;
--Left;
res+=' ';
}
}
if( Right-Left>1 )
{
string temp=s.substr( Left+1, Right-Left-1 );
res+=temp;
}
return res;
}
};
学习牛油的技巧
// 亦或技巧 字符a ^' ' 则大小写随意切换
c^=' ';