获取意外的无限while循环

给定一个整数。任务是删除一些数字并重新排列数字(如有必要),以使所得整数为可以被3整除的最大可能整数。

我的算法是:

如果数字本身可以被3整除,则只需按降序打印数字即可。   如果数字是1模3,则删除整数中也是1模3的最小数字之一,然后按降序打印数字。如果没有这样的数字,则删除2取模3的两个最小数字,然后按降序打印数字。   如果数字是2模3,则类似于上述情况2。
n = 223
s = str(n)

if n % 3 == 0:
    n = "".join(sorted(str(n), reverse=True))

if n % 3 == 1:
    n = "".join(sorted(str(n)))
    count = 0
    for char in s:
        if int(char) % 3 == 1:
            s = s.replace(char, '', 1)
            count+=1
    if count != 0:
        n = "".join(sorted(s, reverse=True))
        print(n)
    else:
        count2 = 0
        while count2 <= 2:
            print('l')
            for char in s:
                if int(char) % 3 == 2:
                    s = s.replace(char, '', 1)
                    count2+=1
        n = "".join(sorted(s, reverse=True))
        print(n)       

Note that I haven't written the part of the code for Case 3. I was just checking for n=223 which is in Case 2.

我还不是高级编码器,所以最好进行一些优化(如果可能):)

提前致谢。