这里提供一种思路,想要输出的字符串在添加前导零之后在和原字符串对齐之后不会与之相等,就要保证从原字符串的0位置到输出字符串的最高位的位置之间不能在原字符串中出现0,所以我们先进行原字符串中从左到右第一个0位置的查找,找到之后从该位置开始向下标末尾开始构造,如果元字符为0,则添加1,如果为0,则添加1,在构造出一个新字符串之后进行去除前导零的规范操作。这是第一种情况
第二种情况,即原字符串中没有0的出现,这时候只需要根据原字符串的最后一位来输出结果就好
#define int long long
using namespace std;
void work()
{
string s ; cin >> s;
int n = s.size();
int xia = n - 1 ;
for(int i = 0 ; i < n ; i++)
{
if(s[i] == '0')
{
xia = i ;
break ;
}
}
string x = "" ;
for(int i = xia ; i < n ; i++)
{
if(s[i] == '0')
{
x += '1';
}
else
{
x += '0';
}
}
reverse(x.begin() , x.end());
while(!x.empty() && x.back() == '0')
{
x.pop_back();
}
reverse(x.begin() , x.end());
if(x.empty())
{
for(int i = 1 ; i <= 9 ; i++)
{
if(s.back() - '0' != i)
{
x += char(i + '0');
break ;
}
}
}
cout << x << endl;
}
signed main()
{
int t; cin >> t ;
while(t--)
{
work();
}
return 0 ;
}