小米发明了一个删数游戏,给定一个数字串,从中删去一些数字,需要删除的数字也是以数字串给出。数字串很长很长,可能会达到
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,则将该数字放到字符串头部。这样遍历一遍就行了
通过分析题目,我们可以看出这是一个字符串的删除问题,需要删除一个很长的数字串中的一些数字。要快速删除数字,最好使用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
方法查找下一个要删除的数字,直到找不到为止。最后,我们打印出删除后的字符串。
请注意,这只是一个示例代码,并不完整。你可以根据实际情况进行修改和优化,例如添加异常处理、输入校验等。
希望能对你有所帮助!