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; } };
全部评论
(0) 回帖