Skip to content

Commit

Permalink
add problem 28
Browse files Browse the repository at this point in the history
  • Loading branch information
nateweller committed Nov 28, 2021
1 parent 7e278e3 commit 4af9964
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
37 changes: 37 additions & 0 deletions 28. Implement strStr()/problem.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# 28. Implement strStr()

Implement strStr().

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

**Clarification:**

What should we return when needle is an empty string? This is a great question to ask during an interview.

For the purpose of this problem, we will return 0 when needle is an empty string. This is consistent to C's strstr() and Java's indexOf().

**Example 1:**

```
Input: haystack = "hello", needle = "ll"
Output: 2
```

**Example 2:**

```
Input: haystack = "aaaaa", needle = "bba"
Output: -1
```

**Example 3:**

```
Input: haystack = "", needle = ""
Output: 0
```

**Constraints:**

* 0 <= haystack.length, needle.length <= 5 * 104
* haystack and needle consist of only lower-case English characters.
26 changes: 26 additions & 0 deletions 28. Implement strStr()/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* @param {string} haystack
* @param {string} needle
* @return {number}
*/
var strStr = function(haystack, needle) {
if (needle === "") return 0;
if (needle.length > haystack.length) return -1;

let haystackPointer = 0;
let needlePointer = 0;

while (haystackPointer < haystack.length && needlePointer < needle.length) {
if (haystack[haystackPointer] === needle[needlePointer]) {
haystackPointer++;
needlePointer++;
} else {
haystackPointer = haystackPointer + 1 - needlePointer;
needlePointer = 0;
}
}

if (needlePointer === needle.length) return haystackPointer - needle.length;

return -1;
};

0 comments on commit 4af9964

Please sign in to comment.