File tree 1 file changed +13
-12
lines changed
scripts/algorithms/L/Longest Palindrome by Concatenating Two Letter Words
1 file changed +13
-12
lines changed Original file line number Diff line number Diff line change
1
+ // Runtime: 642 ms (Top 13.93%) | Memory: 67.4 MB (Top 22.14%)
1
2
var longestPalindrome = function ( words ) {
2
3
const n = words . length ;
3
4
const map = new Map ( ) ;
4
-
5
+
5
6
let len = 0 ;
6
-
7
+
7
8
for ( const word of words ) {
8
9
const backward = word . split ( "" ) . reverse ( ) . join ( "" ) ;
9
-
10
+
10
11
if ( map . has ( backward ) ) {
11
12
len += ( word . length * 2 ) ;
12
13
map . set ( backward , map . get ( backward ) - 1 ) ;
13
-
14
+
14
15
if ( map . get ( backward ) === 0 ) map . delete ( backward ) ;
15
16
}
16
17
else {
17
18
if ( ! map . has ( word ) ) map . set ( word , 0 ) ;
18
19
map . set ( word , map . get ( word ) + 1 ) ;
19
20
}
20
21
}
21
-
22
+
22
23
let maxLenSelfPalindrome = 0 ;
23
-
24
+
24
25
for ( const word of map . keys ( ) ) {
25
26
if ( isPalindrome ( word ) ) {
26
27
maxLenSelfPalindrome = Math . max ( maxLenSelfPalindrome , word . length ) ;
27
28
}
28
- }
29
-
29
+ }
30
+
30
31
return len + maxLenSelfPalindrome ;
31
-
32
+
32
33
function isPalindrome ( word ) {
33
34
let left = 0 ;
34
35
let right = word . length - 1 ;
35
-
36
+
36
37
while ( left < right ) {
37
38
if ( word [ left ] != word [ right ] ) return false ;
38
39
left ++ ;
39
40
-- right ;
40
41
}
41
-
42
+
42
43
return true ;
43
44
}
44
- } ;
45
+ } ;
You can’t perform that action at this time.
0 commit comments