第一眼看到這題就覺得用python做會很簡單,但是我的python實在是不太行,所以就拿c++硬懟了。
c++:
class
solution
; string ms[12]
=;string res ="";
int len = s.
size()
; res = res + s[len -4]
+ s[len -3]
+ s[len -2]
+ s[len -1]
+'-'
; string day ="";
int index =0;
for(
int i =
0; i < len; i++
)else}if
(day.
size()
==1) string month ="";
for(
int i = index +
3; i < len; i++
)else
}for
(int i =
0; i <
12; i++)}
res = res + month +
'-'+ day;
return res;}}
;
之後又學習了python的解法,真滴快啊:
class
solution
:def
reformatdate
(self, s:
str)
->
str:
d, m, y = s.split(
) d =
int(d[:-
2]) month =
["jan"
,"feb"
,"mar"
,"apr"
,"may"
,"jun"
,"jul"
,"aug"
,"sep"
,"oct"
,"nov"
,"dec"
] m =
0for i in
range(12
):if month[i]
== m:
m = i+
1 y =
int(y)
res =
"%04d-%02d-%02d"
%(y, m, d)
return res
想了半天有什麼優秀演算法,然後發現就是暴力。。。
**如下:
class
solution
}sort
(s.begin()
, s.
end())
;int res =0;
int mod =
1e9+7;
for(
int i = left-
1; i < right;
++i) res =
(res+s[i]
)%mod;
return res;}}
;
一次一次操作想可能性太多了,全域性角度看,就是從排序後的陣列兩邊刪掉三個元素,問最後左右兩端差值,那麼遍歷一遍就成了
**如下:
class
solution
sort
(nums.
begin()
, nums.
end())
;int res = nums.
back()
- nums.
front()
;for
(int i =
0; i <=
3; i++
)return res;}}
;
動態規劃
**如下:
int f[
100010];
class
solution}}
}return f[n];}
};
leetcode第8場雙周賽
這次雙周賽有意外,第二第三題按照提示返回int會報錯,要返回list 第一題給你乙個字串 s,返回只含 單一字母 的子串個數。示例 1 輸入 aaaba 輸出 8 解釋 只含單一字母的子串分別是 aaa aa a b aaa 出現 1 次。aa 出現 2 次。a 出現 4 次。b 出現 1 次。所以...
leetcode第 24 場雙周賽
給你乙個整數陣列nums。你可以選定任意的正數startvalue 作為初始值。你需要從左到右遍歷nums陣列,並將 startvalue 依次累加上nums陣列中的值。請你在確保累加和始終大於等於 1 的前提下,選出乙個最小的正數作為 startvalue 輸入 nums 3,2,3,4,2 輸出...
leetcode 第27場雙周賽
通過翻轉子陣列使兩個陣列相等 檢查乙個字串是否包含所有長度為k的二進位制子串 課程安排 摘櫻桃 3分 簡單 4分 中等 5分 中等 6分 困難 翻譯下題意,其實就是問我們兩個陣列是否相等,判斷陣列是否相等有很多方法,這邊我直接排序,遍歷一遍看是否有不一樣的元素 陣列排序的複雜度,故為o nlogn ...