1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【備忘録】Codewar(JavaScript)勉強記録 3

Posted at

Codewar を使い始めたので自分用アウトプット記録。3

5. Return Negative

パラメーターの数字をネガティブにして返す。

もともとネガティブの場合は、そのまま返す。

0 の場合は 0 を返す。

makeNegative(1); // return -1
makeNegative(-5); // return -5
makeNegative(0); // return 0
makeNegative(0.12); // return -0.12

1-1.単純に条件分岐でそれぞれ返す。

Time Complexity: O(1)

処理自体は一回

Space Complexity: O(1)

function makeNegative(num) {
  if (num === 0) {
    return 0;
  } else if (num < 0) {
    return num;
  } else {
    return num * -1;
  }
}

ベストプラクティス参考

function makeNegative(num) {
//正の数と0には正の数、負の数には負で返すメソッド
  return -Math.abs(num);
}

Math.abs()

returns the absolute value of the number.
returns x if x is positive or zero
returns -x if x is negative

Math.abs('-1'); // 1
Math.abs(-2); // 2
Math.abs(null); // 0
Math.abs(''); // 0
Math.abs([]); // 0
Math.abs([2]); // 2
Math.abs([1, 2]); // NaN
Math.abs({}); // NaN
Math.abs('string'); // NaN
Math.abs(); // NaN
function makeNegative(num) {
  return num < 0 ? num : -num;
}

6. Reverse words

文字列をパラメータとして受け取り、それぞれの言葉を反転する。スペースはそのまま。

"This is an example!" ==> "sihT si na !elpmaxe"
"double  spaces"      ==> "elbuod  secaps"

1-1.Brute Force

word ごとに配列に入れる。
一つ目のループで配列自体をループし、二つ目のループで文字列を後ろから見ていく。

Time Complexity: O(N^2)

ネストループ

Space Complexity: O(1)

function reverseWords(str) {
  let reversed = '';
  const words = str.split(' '); // ['double','spaces']

  for (let i = 0; i < words.length; i++) {
    const substr = words[i];
    for (let j = substr.length - 1; j >= 0; j--) {
      reversed = reversed + substr[j];
    }
    if (i !== words.length - 1) {
      reversed = reversed + ' ';
    }
  }
  return reversed;
}

ベストプラクティス参考

function reverseWords(str) {
  // パラメータの文字列を配列に入れる
  //さらにwordごとに配列に入れる、配列の順番を逆にするメソッドで順番を変え、配列から文字列に変換、すべて要素やってから全部文字列にする。
  return str
    .split(' ')
    .map(function (word) {
      return word.split('').reverse().join('');
    })
    .join(' ');
}


function reverseWords(str) {
  return str.split(' ').map( str => str.split('').reverse().join('') ).join(' ');
}

メソッド

  • Math.abs() -> 正数または0を受け取ったら、正数を返し、負の数には負の数を返す。
  • split(' ') -> 文字列から配列に変換
  • reverse() -> 配列の要素の順番をリバースする
1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?