# 28. Implement strStr()

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

class Solution {
public:
    int strStr(string haystack, string needle) {
        int len_1 = haystack.size(),len_2 = needle.size(),j,num=0;
        if(needle == "")
            return 0;
        if(len_1<len_2)
            return -1;
        for(int i=0;i<len_1-len_2+1;i++){
            if(haystack[i]==needle[0]){
                num=0;
                for(j=0;j<len_2;j++){
                    if(haystack[i+j]!=needle[j]){
                        break;
                    }else{
                        num++;
                    }
                }
                if(num==len_2)
                    return i;
            }
        }
        return -1;
    }
};

不是很理解为什么要处理strStr(“”,”“)=0,strStr(“a”,”“)=0的情况,空字符串怎么会有匹配呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sure, I can help you with that. Here's a possible implementation of the program you described: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <stdbool.h> #define MAX_WORD_SIZE 80 #define ASCII_SIZE 128 void print_colored(char* text, char* color) { printf("\033[%sm%s\033[0m", color, text); } bool decode_and_check(char* word, int n, char* encoded_text) { int len = strlen(encoded_text); char decoded_text[len + 1]; for (int i = 0; i < len; i++) { decoded_text[i] = ((encoded_text[i] - n) % ASCII_SIZE + ASCII_SIZE) % ASCII_SIZE; } decoded_text[len] = '\0'; if (strstr(decoded_text, word) != NULL) { return true; } else { return false; } } int main() { char word[MAX_WORD_SIZE + 1]; int n; char encoded_text[ASCII_SIZE]; fgets(word, MAX_WORD_SIZE + 1, stdin); scanf("%d", &n); getchar(); // read the newline character after n fgets(encoded_text, ASCII_SIZE, stdin); encoded_text[strcspn(encoded_text, "\n")] = '\0'; // remove the newline character from encoded_text if (decode_and_check(word, n, encoded_text)) { print_colored("YES\n", "32"); // green color } else { print_colored("NO\n", "31"); // red color } return 0; } ``` The program reads the input from standard input using `fgets()` and `scanf()`, and then applies the decoding algorithm to the `encoded_text` string using a loop and the `%` operator. The resulting `decoded_text` string is then checked for the presence of the `word` substring using `strstr()`. Finally, the program prints either "YES" or "NO" in the corresponding color using the `print_colored()` function and ANSI escape codes. I hope this helps! Let me know if you have any questions.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值