复制
收藏
提问
简洁

class Solution { public: int strStr(string haystack, string needle) { int left=0; if(haystack==needle) return 0; for(int i=0;i<haystack.size()-needle.size();i++) { if(haystack.substr(i,needle.size())==needle) { return i; } else return -1; } } };修改代码

3e74d1f1a
0秒前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁模式
深入研究一些

你提供的代码中存在一些问题,比如在循环中,如果找到了匹配的字符串,应该立即返回当前索引,而不是继续循环。另外,循环的终止条件也需要调整,因为如果needle的长度为0,那么应该返回0。

下面是修改后的代码:

class Solution {
public:
    int strStr(string haystack, string needle) {
        if (needle.empty()) return 0; // 如果needle为空,直接返回0
        if (haystack.empty()) return -1; // 如果haystack为空,返回-1

        int len1 = haystack.size();
        int len2 = needle.size();

        for (int i = 0; i <= len1 - len2; ++i) {
            if (haystack.substr(i, len2) == needle) {
                return i; // 找到匹配的字符串,返回当前索引
            }
        }
        return -1; // 没有找到匹配的字符串,返回-1
    }
};

这段代码首先检查needle是否为空,如果为空,则直接返回0。然后检查haystack是否为空,如果为空,则返回-1。接下来,使用一个循环来遍历haystack,每次比较从当前索引开始的len2长度的子字符串是否与needle相等。如果相等,则返回当前索引。如果循环结束后都没有找到匹配的字符串,则返回-1。

你觉得结果怎么样?
如何优化字符串匹配算法?
字符串匹配的KMP算法是什么?
如何使用BM算法进行字符串匹配?
字符串搜索的Rabin-Karp算法
如何实现字符串的正则表达式匹配?
字符串匹配算法的时间复杂度分析

以上内容由AI搜集生成,仅供参考

在线客服