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;
    
    }
};

https://leetcode.com/problems/reverse-string-ii/discuss/1325345/C%2B%2B-oror-Faster-than-100-oror-0ms

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; 
    }
};