File tree 6 files changed +276
-0
lines changed
0030.Substring with Concatenation of All Words
6 files changed +276
-0
lines changed Original file line number Diff line number Diff line change @@ -227,6 +227,44 @@ public class Solution {
227
227
}
228
228
```
229
229
230
+ ``` php
231
+ class Solution {
232
+ /**
233
+ * @param integer $a
234
+ * @param integer $b
235
+ * @return integer
236
+ */
237
+
238
+ function divide($a, $b) {
239
+ if ($b == 0) {
240
+ throw new Exception('Can not divide by 0');
241
+ } elseif ($a == 0) {
242
+ return 0;
243
+ }
244
+ if ($a == -2147483648 && $b == -1) {
245
+ return 2147483647;
246
+ }
247
+ $sign = $a < 0 != $b < 0;
248
+
249
+ $a = abs($a);
250
+ $b = abs($b);
251
+ $ans = 0;
252
+ while ($a >= $b) {
253
+ $x = $b;
254
+ $cnt = 1;
255
+ while ($a >= $x << 1) {
256
+ $x <<= 1;
257
+ $cnt <<= 1;
258
+ }
259
+ $a -= $x;
260
+ $ans += $cnt;
261
+ }
262
+
263
+ return $sign ? -$ans : $ans;
264
+ }
265
+ }
266
+ ```
267
+
230
268
<!-- tabs: end -->
231
269
232
270
<!-- end -->
Original file line number Diff line number Diff line change @@ -225,6 +225,44 @@ public class Solution {
225
225
}
226
226
```
227
227
228
+ ``` php
229
+ class Solution {
230
+ /**
231
+ * @param integer $a
232
+ * @param integer $b
233
+ * @return integer
234
+ */
235
+
236
+ function divide($a, $b) {
237
+ if ($b == 0) {
238
+ throw new Exception('Can not divide by 0');
239
+ } elseif ($a == 0) {
240
+ return 0;
241
+ }
242
+ if ($a == -2147483648 && $b == -1) {
243
+ return 2147483647;
244
+ }
245
+ $sign = $a < 0 != $b < 0;
246
+
247
+ $a = abs($a);
248
+ $b = abs($b);
249
+ $ans = 0;
250
+ while ($a >= $b) {
251
+ $x = $b;
252
+ $cnt = 1;
253
+ while ($a >= $x << 1) {
254
+ $x <<= 1;
255
+ $cnt <<= 1;
256
+ }
257
+ $a -= $x;
258
+ $ans += $cnt;
259
+ }
260
+
261
+ return $sign ? -$ans : $ans;
262
+ }
263
+ }
264
+ ```
265
+
228
266
<!-- tabs: end -->
229
267
230
268
<!-- end -->
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ /**
3
+ * @param integer $a
4
+ * @param integer $b
5
+ * @return integer
6
+ */
7
+
8
+ function divide ($a , $b ) {
9
+ if ($b == 0 ) {
10
+ throw new Exception (' Can not divide by 0' );
11
+ } elseif ($a == 0 ) {
12
+ return 0 ;
13
+ }
14
+ if ($a == - 2147483648 && $b == - 1 ) {
15
+ return 2147483647 ;
16
+ }
17
+ $sign = $a < 0 != $b < 0 ;
18
+
19
+ $a = abs ($a );
20
+ $b = abs ($b );
21
+ $ans = 0 ;
22
+ while ($a >= $b ) {
23
+ $x = $b ;
24
+ $cnt = 1 ;
25
+ while ($a >= $x << 1 ) {
26
+ $x <<= 1 ;
27
+ $cnt <<= 1 ;
28
+ }
29
+ $a -= $x ;
30
+ $ans += $cnt ;
31
+ }
32
+
33
+ return $sign ? - $ans : $ans ;
34
+ }
35
+ }
Original file line number Diff line number Diff line change @@ -308,6 +308,62 @@ public class Solution {
308
308
}
309
309
```
310
310
311
+ ``` php
312
+ class Solution {
313
+ /**
314
+ * @param String $s
315
+ * @param String[] $words
316
+ * @return Integer[]
317
+ */
318
+ function findSubstring($s, $words) {
319
+ $cnt = [];
320
+ foreach ($words as $w) {
321
+ if (!isset($cnt[$w])) {
322
+ $cnt[$w] = 1;
323
+ } else {
324
+ $cnt[$w]++;
325
+ }
326
+ }
327
+ $m = strlen($s);
328
+ $n = count($words);
329
+ $k = strlen($words[0]);
330
+ $ans = [];
331
+ for ($i = 0; $i < $k; ++$i) {
332
+ $cnt1 = [];
333
+ $l = $i;
334
+ $r = $i;
335
+ $t = 0;
336
+ while ($r + $k <= $m) {
337
+ $w = substr($s, $r, $k);
338
+ $r += $k;
339
+ if (!array_key_exists($w, $cnt)) {
340
+ $cnt1 = [];
341
+ $l = $r;
342
+ $t = 0;
343
+ continue;
344
+ }
345
+ if (!isset($cnt1[$w])) {
346
+ $cnt1[$w] = 1;
347
+ } else {
348
+ $cnt1[$w]++;
349
+ }
350
+ ++$t;
351
+ while ($cnt1[$w] > $cnt[$w]) {
352
+ $remove = substr($s, $l, $k);
353
+ $l += $k;
354
+ $cnt1[$remove]--;
355
+ $t--;
356
+ }
357
+ if ($t == $n) {
358
+ $ans[] = $l;
359
+ }
360
+ }
361
+ }
362
+ return $ans;
363
+ }
364
+ }
365
+ ```
366
+
311
367
<!-- tabs: end -->
312
368
313
369
### 方法二
Original file line number Diff line number Diff line change @@ -305,6 +305,62 @@ public class Solution {
305
305
}
306
306
```
307
307
308
+ ``` php
309
+ class Solution {
310
+ /**
311
+ * @param String $s
312
+ * @param String[] $words
313
+ * @return Integer[]
314
+ */
315
+ function findSubstring($s, $words) {
316
+ $cnt = [];
317
+ foreach ($words as $w) {
318
+ if (!isset($cnt[$w])) {
319
+ $cnt[$w] = 1;
320
+ } else {
321
+ $cnt[$w]++;
322
+ }
323
+ }
324
+ $m = strlen($s);
325
+ $n = count($words);
326
+ $k = strlen($words[0]);
327
+ $ans = [];
328
+ for ($i = 0; $i < $k; ++$i) {
329
+ $cnt1 = [];
330
+ $l = $i;
331
+ $r = $i;
332
+ $t = 0;
333
+ while ($r + $k <= $m) {
334
+ $w = substr($s, $r, $k);
335
+ $r += $k;
336
+ if (!array_key_exists($w, $cnt)) {
337
+ $cnt1 = [];
338
+ $l = $r;
339
+ $t = 0;
340
+ continue;
341
+ }
342
+ if (!isset($cnt1[$w])) {
343
+ $cnt1[$w] = 1;
344
+ } else {
345
+ $cnt1[$w]++;
346
+ }
347
+ ++$t;
348
+ while ($cnt1[$w] > $cnt[$w]) {
349
+ $remove = substr($s, $l, $k);
350
+ $l += $k;
351
+ $cnt1[$remove]--;
352
+ $t--;
353
+ }
354
+ if ($t == $n) {
355
+ $ans[] = $l;
356
+ }
357
+ }
358
+ }
359
+ return $ans;
360
+ }
361
+ }
362
+ ```
363
+
308
364
<!-- tabs: end -->
309
365
310
366
### Solution 2
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ /**
3
+ * @param String $s
4
+ * @param String[] $words
5
+ * @return Integer[]
6
+ */
7
+ function findSubstring($s, $words) {
8
+ $cnt = [];
9
+ foreach ($words as $w) {
10
+ if (!isset($cnt[$w])) {
11
+ $cnt[$w] = 1;
12
+ } else {
13
+ $cnt[$w]++;
14
+ }
15
+ }
16
+ $m = strlen($s);
17
+ $n = count($words);
18
+ $k = strlen($words[0]);
19
+ $ans = [];
20
+ for ($i = 0; $i < $k; ++$i) {
21
+ $cnt1 = [];
22
+ $l = $i;
23
+ $r = $i;
24
+ $t = 0;
25
+ while ($r + $k <= $m) {
26
+ $w = substr($s, $r, $k);
27
+ $r += $k;
28
+ if (!array_key_exists($w, $cnt)) {
29
+ $cnt1 = [];
30
+ $l = $r;
31
+ $t = 0;
32
+ continue;
33
+ }
34
+ if (!isset($cnt1[$w])) {
35
+ $cnt1[$w] = 1;
36
+ } else {
37
+ $cnt1[$w]++;
38
+ }
39
+ ++$t;
40
+ while ($cnt1[$w] > $cnt[$w]) {
41
+ $remove = substr($s, $l, $k);
42
+ $l += $k;
43
+ $cnt1[$remove]--;
44
+ $t--;
45
+ }
46
+ if ($t == $n) {
47
+ $ans[] = $l;
48
+ }
49
+ }
50
+ }
51
+ return $ans;
52
+ }
53
+ }
You can’t perform that action at this time.
0 commit comments