#〜問題文〜
Given an array nums of integers, return how many of them contain an even number of digits.
Example 1:
Input: nums = [12,345,2,6,7896]
Output: 2
Explanation:
12 contains 2 digits (even number of digits).
345 contains 3 digits (odd number of digits).
2 contains 1 digit (odd number of digits).
6 contains 1 digit (odd number of digits).
7896 contains 4 digits (even number of digits).
Therefore only 12 and 7896 contain an even number of digits.
Example 2:
Input: nums = [555,901,482,1771]
Output: 1
Explanation:
Only 1771 contains an even number of digits.
Constraints:
1 <= nums.length <= 500
1 <= nums[i] <= 10^5
引用元: https://leetcode.com/problems/find-numbers-with-even-number-of-digits/
〜1時間かけて私が作った回答の残骸😇〜
# @param {Integer[]} nums
# @return {Integer}
def find_numbers(nums)
nums.each do |i|
nums_count = nums.length
num_count = i.length
array = []
(0..nums_count).each do |n|
while 0 != (num_count-1) do
arreay [num_count]
end
array =
end
end
end
return #偶数の数
end
# nums = [555,901,482,1771]
# find_numbers(nums)
# 555 => 5,5,5 => 5%2 != 0(奇数) ・ 5%2 == 0(偶数)
# 数字の配列nums
# 偶数の数字の数を返しなさい
# nums<i<
# 10**(num_count-1)
今できる精一杯のコーディングでした。悔いはありません。。。。😇
他の人の回答例(正解ではない)
さっき気づいたんですけど、leetcode の problem / discussって 「正 解」 じゃないんですね 笑
高確率でエラーが起こります 笑
なので他の人の回答を見て参考にしつつ、改善案と気づきを書いていくことにします。
def find_numbers(nums)
keepers = []
nums.each do |n|
if n.to_s.length % 2 == 0
keepers.push(n)
end
end
return keepers.count
end
回答例引用元(一部改変):
https://leetcode.com/problems/find-numbers-with-even-number-of-digits/discuss/499246/Simple-Ruby-solution
#以下、上記回答の分解分析
1. メソッドの定義
def find_numbers(nums)
〜省略〜
end
「find_numbers」というメソッドを定義。
仮引数=「nums」と定義する。
2. メソッドの処理
keepers = []
空の配列「keepers」を定義する。
nums.each do |n|
〜省略〜
end
配列numsの要素数ごとに繰り返し処理をする。
ブロック変数を「n」として、繰り替えじ処理を行う。
if n.to_s.length % 2 == 0
keepers.push(n)
end
【if】
もし、n.to_s.length % 2 == 0 (数字の文字数が偶数) であったら、配列 「target」 に 「x(=nums[indx])」を加算していく。
【else】
そうでなければ何もしない(処理なし)。
↑きっとここがおかしいポイント!
👌本来は、分解した一桁の整数が偶数の物をカウントしなければならない。
(例:243 → [2,4,3]→偶数は2つ)
🙈しかし、本回答では桁数が偶数かどうか判別しているコードになっている。
(例:243 → [2,4,3]→桁数は「偶数じゃない」)
return keepers.count
keepers.countでkeepersの文字数を返す。