Skip to content

Commit

Permalink
0028.实现strStr:优化排版
Browse files Browse the repository at this point in the history
  • Loading branch information
bqlin committed Jan 13, 2022
1 parent 6b85bbd commit 9d59aab
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions problems/0028.实现strStr.md
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ void getNext(int* next, const string& s)

然后还要对next数组进行初始化赋值,如下:

```
```cpp
int j = -1;
next[0] = j;
```
Expand All @@ -278,8 +278,8 @@ next[i] 表示 i(包括i)之前最长相等的前后缀长度(其实就是

所以遍历模式串s的循环下标i 要从 1开始,代码如下:

```
for(int i = 1; i < s.size(); i++) {
```cpp
for (int i = 1; i < s.size(); i++) {
```
如果 s[i] 与 s[j+1]不相同,也就是遇到 前后缀末尾不相同的情况,就要向前回退。
Expand All @@ -292,15 +292,15 @@ next[j]就是记录着j(包括j)之前的子串的相同前后缀的长度
所以,处理前后缀不相同的情况代码如下:
```
```cpp
while (j >= 0 && s[i] != s[j + 1]) { // 前后缀不相同了
    j = next[j]; // 向前回退
}
```

3. 处理前后缀相同的情况

如果s[i] 与 s[j + 1] 相同,那么就同时向后移动i 和j 说明找到了相同的前后缀,同时还要将j(前缀的长度)赋给next[i], 因为next[i]要记录相同前后缀的长度。
如果 s[i] 与 s[j + 1] 相同,那么就同时向后移动i 和j 说明找到了相同的前后缀,同时还要将j(前缀的长度)赋给next[i], 因为next[i]要记录相同前后缀的长度。

代码如下:

Expand Down Expand Up @@ -346,7 +346,7 @@ void getNext(int* next, const string& s){

i就从0开始,遍历文本串,代码如下:

```
```cpp
for (int i = 0; i < s.size(); i++) 
```

Expand All @@ -356,15 +356,15 @@ for (int i = 0; i < s.size(); i++) 

代码如下:

```
```cpp
while(j >= 0 && s[i] != t[j + 1]) {
    j = next[j];
}
```

如果 s[i] 与 t[j + 1] 相同,那么i 和 j 同时向后移动, 代码如下:

```
```cpp
if (s[i] == t[j + 1]) {
    j++; // i的增加在for循环里
}
Expand All @@ -376,7 +376,7 @@ if (s[i] == t[j + 1]) {

代码如下:

```
```cpp
if (j == (t.size() - 1) ) {
    return (i - t.size() + 1);
}
Expand Down

0 comments on commit 9d59aab

Please sign in to comment.