NC89 字符串变形 疑惑
NC89 字符串变形 是不是出问题了啊,排行中的好多代码都不能全部通过测试用例
这个是我自己的代码
class Solution {
public:
char changeUpDown(char c)
{
if(c >= 'a' && c <= 'z') return c - 'a' + 'A';
else if(c >= 'A' && c <= 'Z') return c - 'A' + 'a';
else return c;
}
string trans(string s, int k) {
std::cout << s.size() << std::endl;
string ans = "";
string word = "";
int n = k;
for(int i = n - 1; i >= 0; --i)
{
if(s[i] == ' ')
{
ans.append(word + " ");
word.clear();
}
else{
word = changeUpDown(s[i]) + word;
if(i == 0)
ans.append(word);
}
}
return ans;
}
};
这个是我在NC89 C++排行第三中复制的代码 (两份代码都是17/20不能通过)class Solution {
public:
string trans(string s, int n) {
// write code here
reverse(s.begin(),s.end());
//再分别反转,并将字符变为大写字符
int start =0 ;
while (start<n&&s[start]==' ') ++start;
for (int i=start;i<n;++i) {
if (s[i]==' ') {
reverse(s.begin()+start,s.begin()+i);
start = i+1;
}
else {
if (s[i]>='a'&&s[i]<='z') {
s[i] = 'A'+(s[i]-'a');
}
else s[i] = 'a'+(s[i]-'A');
}
}
reverse(s.begin()+start,s.end());
return s;
}
};