class Solution {
public:
string removeKdigits(string num, int k)
{
stack<char> temp;
string s;
int pos;
for(int i = 0;i < num.size();i++)
{
if(temp.empty() && num[i] != '0')
{
temp.push(num[i]);
}
else if(temp.empty() && num[i] == '0')
{
continue;
}
else
{
if(num[i] >= temp.top())
{
temp.push(num[i]);
}
else if(num[i] < temp.top())
{
temp.pop();
k--;
if(k == 0)
{
while(temp.empty() && num[i] == '0')
{
if(i == num.size() - 1)
{
pos = num.size();
break;
}
i++;
}
pos = i;
break;
}
i--;
}
}
}
while(k != 0)
{
if(!temp.empty())
temp.pop();
k--;
}
while(!temp.empty())
{
s += temp.top();
temp.pop();
}
if(!s.empty())
reverse(s.begin(),s.end());
if(pos < num.size())
{
for(int i = pos;i < num.size();i++)
{
s += num[i];
}
}
if(s == "")
return "0";
return s;
}
};