541. Reverse String II
どうにかreverseを使えないかと思ったが自力では考えつかなかった。
https://leetcode.com/problems/reverse-string-ii/discuss/1354754/C%2B%2B-oror-Easy-Solution-oror-91
場合分け
class Solution { public: string reverseStr(string s, int k) { int n = s.size(); int i = 0; string temp =""; while(i < n) { if(n-i >= 2*k)// string sizeが2k以上なら { for(int j=k-1;j>=0;j--){ temp += s[i+j]; } for(int j = k;j<2*k;j++){ temp += s[i+j]; } i += 2*k; } else// string sizeが2k未満なら if(n -i >= k) // string sizeがk以上なら { for(int j=k-1;j>=0;j--){ temp += s[i+j]; } for(int j=i+k;j<n;j++){ temp += s[j]; } break; } else //string sizeがk未満なら { for(int j =n-1;j>=i;j--){ temp += s[j]; } break; } } return temp; } };
reverse
class Solution { public: string reverseStr(string s, int k) { for(int i = 0; i < s.length(); i += (2*k)) { if (i + k < s.length()) { reverse(s.begin()+i, s.begin()+i+k); } else { reverse(s.begin()+i, s.end()); } } return s; } };