20211213-TIL
11712 ワード
アルゴリズム#アルゴリズム#
これはアルゴリズム駐車の最後の問題です.私はいくつかの正規の儀式を処理することをマスターします.問題を理解するのに時間がかかりすぎた.検索により、正規表現や演算子を文字列として参照する場合の演算方法は、約2時間50分かかり、時間内に無理に提出できます.
方法
そこでsplit関数で分割を試みたが,分割する文字列は−,+,*の3つであるため,正規表現以外の方法は考えられなかった.△念のため正規の方法で進められるように、検索で知るまでかなり迷いました.
検索によりsplit関数を正規式で適用し,適用できることが分かった.
4.連結を用いて演算結果を配列から削除し、演算で使用する2つの数字と1つの演算子を含め、3つの演算子の代わりに結果値を使用します.
function solution(expression) {
let answer = 0;
let marks = [["*","-","+"],["*","+","-"],["+","-","*"],["+","*","-"],["-","+","*"],["-","*","+"]];
const expressionArray = expression.split(/(\D)/);
const answerList = [];
const calculator = (n1,n2,operator) => {
if(operator === "+") {
return n1 + n2;
}
if(operator === "-") {
return n1 - n2;
}
if(operator === "*") {
return n1 * n2;
}
}
for(let x of marks) {
const temp = [...expressionArray];
for(let i= 0; i<3; i++) {
for (let j = 0; j<temp.length; j++) {
if(temp[j] === x[i]) {
const result = calculator(+temp[j-1],+temp[j+1],temp[j]);
temp.splice(j-1,3,result)
j = 0;
}
}
}
answerList.push(Math.abs(temp[0]));
}
for(let i = 0; i<answerList.length; i++) {
if(answer < answerList[i]) answer = answerList[i];
}
return answer
}
コアJavaScriptコンテンツのクリーンアップ(2.コンテキストの実行)
関数型JavaScriptインフラストラクチャコース
Reference
この問題について(20211213-TIL), 我々は、より多くの情報をここで見つけました https://velog.io/@shrkdvy123/20211213-TIL-sssfvetcテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol