題目
Day 2: Loops
舉例輸入
javascriptloops
舉例輸出
a
a
i
o
o
j
v
s
c
r
p
t
l
p
s
解析
這題就是要我們先把母音{a,e,i,o,u}提出來先印
然後接下來的字母後印看了很多文章看起來都是O(N^2)
如果可以一圈解決的還請賜教
因此我的解法應該是還可以的
function vowelsAndConsonants(s) {
let vowel = ['a','e','i','o','u']
let strArr = s.split('');
let lowstr = strArr.filter(str => (vowel.includes(str)));
let bigstr = strArr.filter(str => !(vowel.includes(str)));
lowstr.forEach(str => console.log(str));
bigstr.forEach(str => console.log(str));
}
可不可以更短?
可以
function vowelsAndConsonants(s) {
let vowel = ['a','e','i','o','u']
let strArr = s.split('');
strArr.forEach(str => (vowel.includes(str)?console.log(str):""));
strArr.forEach(str => (!(vowel.includes(str))?console.log(str):""));
}
其實差不多,就是少存點東西而已
題目
Day 3: Arrays
舉例輸入
5
2 3 6 6 5
舉例輸出
5
解析
找出第二大的數,這題我有想過如果可以先排序
然後開始找,是不是可以寫得更優雅?
arr.sort();
console.log(arr[arr.length-2])
這樣子就搞定了?結果想到如果最大的數如果有兩個不就爆了?
所以還要存一個數開始往前或往後開始找
而且這樣還要轉型,有時候JS轉型又很奇杷
這樣好像有點麻煩,不符合我的作風
因此我決定通通丟給js的原生碼幫我處理
function getSecondLargest(nums) {
let Largest = Math.max(...nums);
let second = 0;
nums.forEach(num => {
if (Largest > num && num > second) {
second = num;
}
});
return second;
}
本日心得
其實最後是有手賤的想把原本預想的東西完成
還真的差不多了
但工作實在太忙,因此留給大大你們完成吧
雖然還是有錯,但差一點點了(雖然看起來根本沒比上面短)
function getSecondLargest(nums) {
nums = nums.map(num=>+num).sort();
let second
let max = nums[nums.length-1];
for(let i=nums.length;i>=0;i--){
if(nums[i]<max){
second = nums[i];
break;
}
}
return second;
}