File tree Expand file tree Collapse file tree 4 files changed +131
-4
lines changed Expand file tree Collapse file tree 4 files changed +131
-4
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {string[] } strs
3+ * @return {string }
4+ */
5+ var longestCommonPrefix = function ( strs ) {
6+ var point = 0
7+ var common = ""
8+ var shortestStr
9+ var getShortestStr = false
10+
11+ if ( strs . length === 1 ) {
12+ return strs [ 0 ]
13+ }
14+ if ( strs . length === 0 ) {
15+ return ''
16+ }
17+
18+ while ( 1 ) {
19+ for ( var i = 0 ; i < strs . length ; i ++ ) {
20+ var str = strs [ i ]
21+ if ( i > 0 && str [ point ] !== strs [ i - 1 ] [ point ] ) {
22+ return common
23+ }
24+
25+ // 寻找最短的字符串
26+ if ( ! getShortestStr ) {
27+ if ( ! shortestStr ) {
28+ shortestStr = str
29+ } else if ( str . length < shortestStr . length ) {
30+ shortestStr = str
31+ }
32+ }
33+ }
34+
35+ common += strs [ 0 ] [ point ] || ''
36+ point ++
37+ if ( point > shortestStr . length ) {
38+ return common
39+ }
40+ }
41+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
3+
4+ 示例:
5+
6+ 输入: [0,1,0,3,12]
7+ 输出: [1,3,12,0,0]
8+ 说明:
9+
10+ 必须在原数组上操作,不能拷贝额外的数组。
11+ 尽量减少操作次数。
12+
13+ 来源:力扣(LeetCode)
14+ 链接:https://leetcode-cn.com/problems/move-zeroes
15+ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
16+ */
17+
18+ /**
19+ [0, 1, 0, 3, 12]
20+ i
21+ j
22+ [0, 1, 0, 3, 12]
23+ i
24+ j
25+ i位置不等于0 i和j交换 j++
26+
27+ [1, 0, 0, 3, 12]
28+ i
29+ j
30+ i位置等于0 继续前进
31+ [1, 3, 0, 0, 12]
32+ i
33+ j
34+ i位置不等于0 i和j交换 j++
35+ [1, 3, 12, 0, 0]
36+ i
37+ j
38+ i位置不等于0 i和j交换 j++
39+
40+ 此时数组的0全部在最右边了
41+ */
42+
43+ /**
44+ * @param {number[] } nums
45+ * @return {void } Do not return anything, modify nums in-place instead.
46+ */
47+ var moveZeroes = function ( nums ) {
48+ var j = 0
49+ for ( var i = 0 ; i < nums . length ; i ++ ) {
50+ if ( nums [ i ] !== 0 ) {
51+ var temp = nums [ j ]
52+ nums [ j ] = nums [ i ]
53+ nums [ i ] = temp
54+ j ++
55+ }
56+ }
57+ }
Original file line number Diff line number Diff line change 44function Promise ( excutor ) {
55 var self = this
66 self . onResolvedCallback = [ ] // Promise resolve时的回调函数集,因为在Promise结束之前有可能有多个回调添加到它上面
7-
87 function resolve ( value ) {
98 self . data = value
109 self . onResolvedCallback . forEach ( callback => callback ( value ) )
1110 }
12-
1311 excutor ( resolve . bind ( self ) )
1412}
15-
1613Promise . prototype . then = function ( onResolved ) {
1714 var self = this
18-
1915 return new Promise ( resolve => {
2016 self . onResolvedCallback . push ( function ( ) {
2117 var result = onResolved ( self . data )
@@ -42,3 +38,5 @@ new Promise(resolve => {
4238 } )
4339 } )
4440 . then ( console . log )
41+
42+
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {string } haystack
3+ * @param {string } needle
4+ * @return {number }
5+ */
6+ var strStr = function ( haystack , needle ) {
7+ if ( needle === '' ) return 0
8+
9+ var start
10+ for ( var i = 0 ; i < haystack . length - needle . length + 1 ; i ++ ) {
11+ for ( var j = 0 ; j < needle . length ; j ++ ) {
12+ var hIndex = i + j
13+ if ( hIndex > haystack . length ) {
14+ return - 1
15+ }
16+ if ( needle [ j ] === haystack [ i + j ] ) {
17+ if ( j === 0 ) {
18+ start = i
19+ }
20+ if ( j === needle . length - 1 ) {
21+ return start
22+ }
23+ } else {
24+ break
25+ }
26+ }
27+ }
28+ return - 1
29+ } ;
30+
31+ console . log ( strStr ( "hello" , "lo" ) )
You can’t perform that action at this time.
0 commit comments