牛牛的01游戏(递归&模拟)

牛牛的01游戏(递归&模拟)

思路:递归或者模拟。

模拟的时候注意到一旦 a n s . b a c k ( ) = c = 1 ans.back()=c=1 ans.back()=c=1时,这时 c c c不产生贡献了。
模拟方法

string solve(string s) {
       string ans;
       for(char c:s){
           bool f=true;
           while(!ans.empty()&&ans.back()==c){
               ans.pop_back();
               if(c=='0') c='1';
               else f=false;
           }
           if(f) ans.push_back(c);
       }
        return ans;
    }

递归做法

//
 void fun(string &s,char c){
         if(s.empty()) s.push_back(c);
         else if(s.back()==c){
             s.pop_back();
             if(c=='0') fun(s,'1');
         }
        else s.push_back(c);
    }
    string solve(string s) {
        string ans;
        for(char c:s)
           fun(ans,c);
        return ans;
    }

你可能感兴趣的:(模拟,递归)