小米发明了一个删数游戏,给定一个数字串,从中删去一些数字,需要删除的数字也是以数字串给出。数字串很长很长,可能会达到1000000位,删除要花费很长的时间,请你帮助小米找到一个能快速删除数字的方法。

小米发明了一个删数游戏,给定一个数字串,从中删去一些数字,需要删除的数字也是以数字串给出。数字串很长很长,可能会达到
1000000
1000000位,删除要花费很长的时间,请你帮助小米找到一个能快速删除数字的方法。
用void怎么解决


#include <iostream>
using namespace std;

char str[1000000]={0};
int  main() {
    cin>>str;   
    char c;
    cin>>c;
    char* pf,*pl;
    pf=pl=str;
    cout<<str<<endl;
    while (*pf != '\0') {
        if (*pf == c) {
            pf++;
        }
        else {
            *pl=*pf;
            pl++;
            pf++;
        }
    }
    *pl='\0';
    cout<<str;
   
}

被删除数字肯定只是0-9吧。定义一个长度为10的数组A,初始为0,将指定被删除数字作为下标,对应数组元素设置为1
遍历给定的字符串中每个数字,如果以该数字为下标的A数组元素值为0,则将该数字放到字符串头部。这样遍历一遍就行了

  • 以下回答由chatgpt基于相关博客总结生成:

    通过分析题目,我们可以看出这是一个字符串的删除问题,需要删除一个很长的数字串中的一些数字。要快速删除数字,最好使用void类型来解决该问题。下面是一个使用void类型解决该问题的代码示例:

    public void deleteNumber(String numString, String deleteNum) {
        StringBuilder sb = new StringBuilder(numString);
        int index = sb.indexOf(deleteNum);
        while (index != -1) {
            sb.delete(index, index + deleteNum.length());
            index = sb.indexOf(deleteNum);
        }
        System.out.println(sb.toString());
    }
    

    在这个代码示例中,我们首先使用StringBuilder将数字串转换为可变字符串,这样可以方便地进行删除操作。然后使用indexOf方法找到要删除的数字在字符串中的位置,然后使用delete方法删除该数字。然后再次使用indexOf方法查找下一个要删除的数字,直到找不到为止。最后,我们打印出删除后的字符串。

    请注意,这只是一个示例代码,并不完整。你可以根据实际情况进行修改和优化,例如添加异常处理、输入校验等。

    希望能对你有所帮助!