|
发表于 2023-10-21 22:33:58
|
显示全部楼层
这段代码的问题是内存使用超出限制。这是因为代码使用了 string 类来存储输入的字符串,而 string 类在C++中是动态分配内存的,会导致内存占用较大。
为了解决这个问题,我们可以使用字符数组来代替 string 类来存储输入的字符串。字符数组是静态分配的,不会占用额外的内存。
修改后的代码如下:
- #include <iostream>
- using namespace std;
- int main()
- {
- const int MAX_SIZE = 1000; // 假设最大字符串长度为1000
- char a[MAX_SIZE], b[MAX_SIZE], c[MAX_SIZE];
- char s;
- int ai = 0, bi = 0, ci = 0;
- while(cin >> s, s != ',')
- a[ai++] = s;
- while(cin >> s, s != ',')
- b[bi++] = s;
- while(cin >> s, s != ',')
- c[ci++] = s;
- if (bi > ai || ci > ai) {
- puts("-1");
- } else {
- int l, r, len, i = 0;
- for (; i + bi <= ai; i++) {
- int k = 0;
- for (; k < bi; k++) {
- if (a[i + k] != b[k]) {
- break;
- }
- }
- if (k == bi) {
- break;
- }
- }
- len = ci;
- r = ai - len;
- for (; r >= 0; r--) {
- int k = 0;
- for (; k < ci; k++) {
- if (a[r + k] != c[k]) {
- break;
- }
- }
- if (k == ci) {
- break;
- }
- }
- l = i + bi - 1;
- if (l >= r) {
- puts("-1");
- } else {
- cout << r - l - 1;
- }
- }
- return 0;
- }
复制代码
这样修改后的代码不再使用 string 类,而是使用了字符数组来存储输入的字符串,从而减少了内存的使用。 |
|