Study 26.


2021-05-17


コード、面接問題の任意の2つの問題

1.整数平方根の判別


問題の説明
任意の正の整数nについて、nがある正の整数xの二乗であるか否かを判断しようとする.
nが正の整数xの平方である場合、x+1の平方を返し、nが正の整数xの平方でない場合、-1を返す関数を完了する.
せいげんじょうけん
nは正の整数であり、5000000000000以上である.
I/O例
n return
121 144
3 -1
I/O例説明
I/O例#1
121は正の整数11の二乗であるため、144に(11+1)を乗算する.
I/O例#2
3は、正の整数の二乗ではないため、-1を返します.

Answer


code
function solution(n) {
  let answer = Math.sqrt(n);
  if (answer > 0 && Number.isInteger(answer)) {
    return Math.pow(answer + 1, 2);
  } else {
    return -1;
  }
}
description
Math.sqrt()関数は、数値の平方根Mathを返します.sqrt(x)
Number.isInteger()メソッドは、与えられた値が整数であることを決定します.isInteger(value)
Math.pow()二乗を繰り返す場合はMathを用いる.pow(base,指数)baseは底指数を表す

2.起動パスワード


問題の説明
1つの暗号化方法は、1つの文の各アルファベットを一定の距離で伸ばし、別のアルファベットに変換することです.例えば、「AB」は1で「BC」、3で「DE」を表す.「z」が1に等しいと「a」になります.文字列sと距離nを入力し、sがnの暗号文の関数を生成し、ソリューションを完了します.
せいげんじょうけん
いくら押してもスペースは空いています.
sは、小文字、大文字、スペースのみから構成されます.
sの長さは8000以下です.
nは1以上,25以下の自然数である.
I/O例
s n result
"AB"1 "BC"
"z"1 "a"
"a B z"4 "e F d"

Answer


code
function solution(s, n) {
  let answer = s
    .split('')
    .map((v) => {
      if (v === ' ') return v;
      return v.toUpperCase().charCodeAt() + n > 90
        ? String.fromCharCode(v.charCodeAt() + n - 26)
        : String.fromCharCode(v.charCodeAt() + n);
    })
    .join('');
  return answer;
}
description
split('')
文字列をドラッグして配列を返す
map(()=>{})
アレイ内の各要素の結果を集約してアレイに戻す
.toUpperCase()
大文字に変換
.charCodeAt()
指定されたインデックスのUTF-16コードを表す0~65535の整数を返します.
String.fromCharCode()
UTF-16コードユニットを使用して文字列を作成し、返します.
ex) String.fromCharCode(65, 66, 67) === "ABC"