将'1'的位置循环右移一位即可。

#include<bits/stdc++.h>
#define int long long
#define double long double
#define x first
#define y second
using namespace std;
typedef long long LL;
typedef long long ll;
typedef pair<int,int> PII;
const int N=3e5+10;
const int M=1e3+10;
int mod=1e9+7;
int a[N];

void solve(){
    int n;cin>>n;
    string s;cin>>s;
    s=' '+s;
    vector<int>ans(n+10);
    for(int i=1;i<=n;i++) ans[i]=i;
    vector<int>sp;
    for(int i=1;i<=n;i++){
        if(s[i]=='1') sp.push_back(i);
    }
    int cp;
    if(ans.size()) cp=ans[sp[0]];
    for(int i=1;i<sp.size();i++){
        ans[sp[i-1]]=ans[sp[i]];
    }
    if(ans.size()) ans[sp.back()]=cp;
    for(int i=1;i<=n;i++) cout<<ans[i]<<" ";
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    int _;
    _=1;
    //cin>>_;
    while(_--){
        solve();
    }
}