首页 > 解决方案 > 如何删除n个数字中的c个数字?

问题描述

我编写了一个P删除整数中c数字的函数。n

函数的头部是 : void P(int &n, int &c)

假设 n = 23734 和 c = 3
输出应该是:274

这是我在这里问之前尝试过的。

无效 P(int &n,int &c) {

int p=1,k=0;
while(n)
{
    if(n%10==c)
        n=n/10;
        else
        {
            k=k+n%10*10;
            n=n/10;
        }
}
cout<<k;

}

PS我是新来的,所以我不知道如何正确添加代码。

标签: c++functionnumbersdigits

解决方案


使用 std::to_string() 将您的 n 转换为字符串:

std::string s = std::to_string(n);

然后通过添加 48 将 c 转换为 char,这相当于 '0' + 你的数字 c = '0' 和 '9' 之间的一些字符。

char myChar = '0' + c;

现在通过遍历字符串并删除 myChar == s[i] 的索引来擦除 myChar 的每一个出现

for(int i = 0; i < s.size(); i ++){
    If(myChar == s[i]){
        s.erase(s.begin()+i);
        i--;
    }
}

最后,将字符串转换回 int:

n = std::stoi (s);

编辑:您也可以通过除法和模运算来完成此操作,如评论之一所述。

这是我刚刚放在一起的一个例子:

bool sign = false; // false -> + , true -> -
if (n < 0) { n = -n; sign = true; }
int back = 0;
int front = n;

int i = 0;
while (front > 0) {
    if(front % 10 != c){
        back += (front % 10) * std::pow(10, i++);
    }
    front /= 10;
}
n = sign ? -back : back;

推荐阅读