File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1- 学习笔记
1+ 学习笔记
2+
3+ # 第九周学习笔记
4+
5+ ## 不同路径II状态转移方程
6+ 1 . 状态定义
7+ dp[i][j] 表示走到格子(i, j)的方法数
8+ 2 . 状态转义
9+ (i, j)上有障碍物 dp[i][j] = 0
10+ (i, j)上无障碍物 dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
Original file line number Diff line number Diff line change 1+ /**
2+ * 字符串中的第一个唯一字符
3+ * @param {string } s
4+ * @return {number }
5+ */
6+ var firstUniqChar = function ( s ) {
7+ let map = new Map ( ) ;
8+ for ( let i = 0 ; i < s . length ; ++ i ) {
9+ let c = s . charAt ( i ) ;
10+ map . has ( c ) ? map . set ( c , map . get ( c ) + 1 ) : map . set ( c , 1 ) ;
11+ }
12+ for ( let i = 0 ; i < s . length ; ++ i ) {
13+ if ( map . get ( s . charAt ( i ) ) == 1 ) return i ;
14+ }
15+ return - 1 ;
16+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * 同构字符串
3+ * @param {string } s
4+ * @param {string } t
5+ * @return {boolean }
6+ */
7+ var isIsomorphic = function ( s , t ) {
8+ let mapS = new Map ( ) ;
9+ let mapT = new Map ( ) ;
10+ for ( let i = 0 ; i < s . length ; ++ i ) {
11+ let c1 = s . charAt ( i ) ;
12+ let c2 = t . charAt ( i ) ;
13+ if ( mapS . get ( c1 ) != mapT . get ( c2 ) ) return false ;
14+ if ( ! mapS . has ( c1 ) ) {
15+ mapS . set ( c1 , i + 1 ) ;
16+ mapT . set ( c2 , i + 1 ) ;
17+ }
18+ }
19+ return true ;
20+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * 仅仅反转字母
3+ * @param {string } S
4+ * @return {string }
5+ */
6+ var reverseOnlyLetters = function ( S ) {
7+ let left = 0 , right = S . length - 1 ;
8+ S = S . split ( '' ) ;
9+ while ( left < right ) {
10+ if ( ! check ( S [ left ] ) ) left ++
11+ else if ( ! check ( S [ right ] ) ) right -- ;
12+ else if ( check ( S [ left ] ) && check ( S [ left ] ) ) {
13+ let temp = S [ left ] ;
14+ S [ left ] = S [ right ] ;
15+ S [ right ] = temp ;
16+ left ++ ;
17+ right -- ;
18+ }
19+ }
20+ return S . join ( '' ) ;
21+ function check ( s ) {
22+ return / [ a - z A - Z ] / . test ( s ) ;
23+ }
24+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * 反转字符串||
3+ * @param {string } s
4+ * @param {number } k
5+ * @return {string }
6+ */
7+ var reverseStr = function ( s , k ) {
8+ let i = 0 , j = k - 1 ;
9+ s = s . split ( '' ) ;
10+ for ( let i = 0 ; i <= s . length ; i += 2 * k ) {
11+ reverse ( i , i + k - 1 ) ;
12+ }
13+
14+ function reverse ( left , right ) {
15+ while ( left < right ) {
16+ let temp = s [ left ] ;
17+ s [ left ] = s [ right ] ;
18+ s [ right ] = temp ;
19+ left ++ ;
20+ right -- ;
21+ }
22+ }
23+ return s . join ( '' ) ;
24+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * 翻转字符串里头的单词
3+ * @param {string } s
4+ * @return {string }
5+ */
6+ var reverseWords = function ( s ) {
7+ let left = 0 , right = s . length - 1 ;
8+ while ( left < right && s . charAt ( left ) == " " ) ++ left ;
9+ while ( left < right && s . charAt ( right ) == " " ) -- right ;
10+
11+ let deque = [ ] , word = [ ] ;
12+ while ( left <= right ) {
13+ let c = s . charAt ( left ) ;
14+ if ( word . length != 0 && c == " " ) {
15+ deque . unshift ( word . join ( '' ) ) ;
16+ word = [ ] ;
17+ } else if ( c != " " ) {
18+ word . push ( c ) ;
19+ }
20+ ++ left ;
21+ }
22+ deque . unshift ( word . join ( '' ) ) ;
23+ return deque . join ( " " ) ;
24+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * 反转字符串中的单词 III
3+ * @param {string } s
4+ * @return {string }
5+ */
6+ var reverseWords = function ( s ) {
7+ let left = 0 , right = s . length - 1 ;
8+
9+ let res = [ ] , word = [ ] ;
10+ while ( left <= right ) {
11+ if ( s . charAt ( left ) != " " ) {
12+ word . unshift ( s . charAt ( left ) ) ;
13+ }
14+ if ( s . charAt ( left ) == " " && word . length ) {
15+ res . push ( word . join ( '' ) ) ;
16+ word = [ ] ;
17+ res . push ( " " ) ;
18+ } else if ( s . charAt ( left ) == " " ) {
19+ res . push ( " " ) ;
20+ }
21+ left ++ ;
22+ }
23+ res . push ( word . join ( '' ) ) ;
24+ return res . join ( '' ) ;
25+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * 验证回文字符串II
3+ * @param {string } s
4+ * @return {boolean }
5+ */
6+ var validPalindrome = function ( s ) {
7+ let left = 0 , right = s . length - 1 ;
8+ while ( left < right && s . charAt ( left ) == s . charAt ( right ) ) {
9+ left ++ , right -- ;
10+ }
11+ return palindrome ( left + 1 , right ) || palindrome ( left , right - 1 ) ;
12+
13+ function palindrome ( left , right ) {
14+ while ( left < right && s . charAt ( left ) == s . charAt ( right ) ) {
15+ left ++ , right -- ;
16+ }
17+ return left >= right ;
18+ }
19+ } ;
You can’t perform that action at this time.
0 commit comments