File tree Expand file tree Collapse file tree 1 file changed +65
-0
lines changed Expand file tree Collapse file tree 1 file changed +65
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ //dynamic programming
3
+ // O(n^2) time / O(n^2) space
4
+ func countSubstrings1( _ s: String ) -> Int {
5
+ var count = 0
6
+ var characters = Array ( s)
7
+ var isPalindromes = Array ( repeating: Array ( repeating: false , count: characters. count) , count: characters. count)
8
+
9
+ for i in 0 ..< characters. count {
10
+ isPalindromes [ i] [ i] = true
11
+ count += 1
12
+ }
13
+
14
+ for right in 1 ..< characters. count {
15
+ for left in 0 ..< right {
16
+ if characters [ left] == characters [ right]
17
+ && ( isPalindromes [ left+ 1 ] [ right- 1 ] || right- left <= 2 ) {
18
+ isPalindromes [ left] [ right] = true
19
+ count += 1
20
+ }
21
+ }
22
+ }
23
+
24
+ return count
25
+ }
26
+
27
+ //two pointers
28
+ // O(n^2) time / O(n) space
29
+ func countSubstrings2( _ s: String ) -> Int {
30
+ var count = 0
31
+ var characters = Array ( s)
32
+ var left : Int
33
+ var right : Int
34
+
35
+ for i in 0 ..< characters. count{
36
+ left = i
37
+ right = i
38
+
39
+ while left >= 0
40
+ && right < characters. count
41
+ && characters [ left] == characters [ right] {
42
+ count += 1
43
+
44
+ left -= 1
45
+ right += 1
46
+ }
47
+
48
+ left = i
49
+ right = i+ 1
50
+
51
+ while left >= 0
52
+ && right < characters. count
53
+ && characters [ left] == characters [ right] {
54
+ count += 1
55
+
56
+ left -= 1
57
+ right += 1
58
+ }
59
+ }
60
+
61
+ return count
62
+ }
63
+
64
+ }
65
+
You can’t perform that action at this time.
0 commit comments