私は最近FCCの質問を試してきました。モンスターとの戦いのためにアップグレードするのと同じように、私は一度に1つのレベルを通過しました。これは私にとって非常に魅力的です。今日、基本的なアルゴリズムのクライトパートをするのに時間をかけました。いくつかのヒントによると、それは比較的簡単です。いくつかの質問を処理する方法は、学ぶ価値があると思います。たとえば、プロジェクトでキャラクターを処理する必要がある場合があります。関連する方法を考えることができない場合、それは非常に厄介です。だから、ここに記録してください。将来的にいくつかの文字や配列の処理が発生した場合は、この記事を検索して、ドキュメントを翻訳する代わりにプロンプトを取得することを望んでいます。
このブロガーが表示されている場合は、より良いコードや良いアイデアがある場合は、メッセージを残してコミュニケーションをとってください(他の人の優れたコードを学ぶことによってのみ、より速い進歩と柔軟な思考を可能にすることができると思います)。初心者のために、コードを見ずに自分でやるようにしてください。 (次の質問はパラメータータイプを考慮する必要はありません。厳密に言えば、パラメータータイプについて判断を下す必要があります。
1.文字列を反復します
ひもをフリップします
最初に文字列を配列に変換し、次に配列の逆方式を使用して配列の順序をめくり、最後に配列を文字列に変換します。
あなたの結果は文字列でなければなりません
関数Reversestring(str){str = str.split( '')。reverse()。join( ''); return str;} reversestring( "hello");2.パリンドロームをチェックします
指定された文字列がPalindromeの場合、trueを返します。
文字列が句読点、ケース、スペースを無視し、直接読み取り、反対に読む場合、この文字列はパリンドローム(パリンドローム)です。
文字列の余分な句読点とスペースを削除し、文字列を小文字に変換して、文字列がパリンドロームであることを確認する必要があることに注意してください。
関数パラメーターの値は、「レースカー」、「レースカー」、「レースカー」です。
function palindrome(str){//幸運! str = str.Replace(/|/〜|/`|/!|/@|/@|/#|/$ |/%|/^|/&|/*|/(|//(|///(|/////)|/ - /_ |/+|/= |//////|/|/|/[|/] |/{|/} |///////" | '|' |//<句読点は、私のバイドゥですfalse;} palindrome( "eye");/*palindrome( "eye")true.palindrome( "race car")true.palindrome( "palindromeではない")はfalse.palindrome( "man、an、plan、canal、panama")を返すべきです。 false.Palindrome( "Marghtomla")はfalse.Palindrome( "私の年齢は0、0 Si ega ym。")を返す必要があります。Palindrome( "1 Eye for of 1 Eye。")はfalse.palindrome( "0_0(:/ - / :) 0-0")を返す必要があります。3.文章の目的
文字列内の各単語の最初の文字が大文字であり、残りが小文字であることを確認してください。 (例:TitleCase(「私は小さなティーポットです」)は「私は小さなティーポットです」を返す必要があります。TitleCase(「ショートアンドスタウト)は「短くてスタウト」を返します。)
/*この質問は非常に簡単です。主なことは、split()が文字列を配列join()に分割することであることを理解することです。文字に対してのみ有効であり、他の文字(例:/、!@)は無効であることに注意してください*/function titlecase(str){str = str.split( ""); //文字列を、(var i = 0; i <str.length; i ++){str [i] = str [i] .tolowercase(); str [i] = str [i] .substring(0、1).touppercase() + str [i] .substring(1); } return str.join( ""); //配列をスペースから文字列に接続します} titlecase( "私はティーポットです");4.エンディングを構成します
文字列(STR)が指定された文字列(ターゲット)で終わるかどうかを確認します。
はいの場合、trueを返します。そうでない場合は、falseを返します。たとえば、確認( "Bastian"、 "n")はtrueを返す必要があります。確認(「コナー」、「n」)はfalseを返す必要があります。確認(「「水上を歩く」と仕様からソフトウェアの開発は、両方が凍結されている場合は簡単です」、「仕様」)は虚偽を返します。
関数確認(str、ターゲット){//「決してあきらめず、幸運はあなたを見つけるでしょう。」 // -FALCOR RETURN STR.SUBSTR(str.Length-Target.length)==ターゲット? true:false;}確認( "bastian"、 "n");確認( "彼は私に新しい名前を与えなければならない"、 "na");/*確認( "bastian"、 "n")true.confiredending( "connor"、 "n")はfalse.confirmedinding( "freed fromed fromed in" ")を返す(" fry fromed)confiredending( "私に新しい名前を与えるために」、「名前」)true.confireandending(「彼は私に新しい名前を与えなければならない」、「私」)を返す必要があります。5.文字列に文字列を繰り返します
重要なことを3回言う!
指定された文字列numを繰り返し、numが負の数の場合は空の文字列を返します。例えば:
繰り返し( "*"、3)「***」を返す必要があります。
繰り返し( "ABC"、3)「ABCABCABC」を返す必要があります。
繰り返し( "ABC"、4)「ABCABCABCABC」を返す必要があります。
繰り返し( "ABC"、1)「ABC」を返す必要があります。
繰り返し( "*"、8) "*********"を返す必要があります。
繰り返し( "ABC"、-2) ""を返す必要があります。
チャレンジを完了できない場合は、究極の動き「Read-Search-Ask」を使用することを忘れないでください。
ここにあなたを助けるいくつかのリソースがあります:
•グローバル文字列オブジェクト
関数繰り返し(str、num){// repeat and of me var newsstr = str; if(num> 1){for(var i = 1; i <num; i ++){str += newtr; } return str; } else if(num == 1){return str; } else {return ""; }} Repeat( "ABC"、3); Repeat( "*"、3);6.チャンキーモンキー
サルはバナナを食べますが、それらをいくつかのセクションに分けて食べます!
指定された配列サイズに従って、配列ARRを複数の配列ブロックに分割します。
例:chunk([1,2,3,4]、2)= [[1,2]、[3,4]];
チャンク([1,2,3,4,5]、2)= [[1,2]、[3,4]、[5]];
関数chunk(arr、size){// break it up.var arr1 = []; for(var i = 0; i <arr.length; i = i + size){var arr2 = arr; arr1.push(arr2.slice(i、i + size)); } return arr1;} chunk(["a"、 "b"、 "c"、 "d"]、2);7.皮膚用警備員
真実で偽の猿の王!
配列内のすべてのfalse値を削除します。
JavaScriptでは、誤った値はfalse、null、0、 "、未定義、およびnanです。
チャレンジを完了できない場合は、究極の動き「Read-Search-Ask」を使用することを忘れないでください。
ここにあなたを助けるいくつかのリソースがあります:
•ブールオブジェクト
•array.filter()
例えば:
警備員([7、 "ate"、 ""、false、9])は[7、 "ate"、9]を返す必要があります。
バウンサー(["a"、 "b"、 "c"])は["a"、 "b"、 "c"を返す必要があります。
警備員([false、null、0、nan、undefined ""])は[]を返す必要があります。
警備員([1、null、nan、2、未定義])は[1、2]を返す必要があります。
/*この質問は、フィルターの理解に関するものです。これが私の最初のコードです。よく書かれておらず、参照値がほとんどありません。また、NAN比較にも注意を払う必要があります。あなた自身は自分と同じではありません(nan!= nan)*/function bouncer(arr){//この警備員に偽のIDを表示しないでください。 var arr1 = []; var j = 0; arr.filter(function(val、index){if(val === false || val === null || val === 0 || val === "" || val === undefined || val!== val){arr1.push(index);}}); var len = arr1.length; for(var i = 0; i <len; i ++){arr.splice(arr1 [i] -j、1); J ++; } return arr;} bouncer([7、 "ate"、 ""、false、9]);8.SeekとDestroy
ジンクスのモルタル!
駆逐艦関数を実装すると、最初のパラメーターは破壊される配列であり、残りのパラメーターは破壊される値です。
例えば:
駆逐艦([1、2、3、1、2、3]、2、3)は[1、1]を返す必要があります。
駆逐艦([1、2、3、5、1、2、3]、2、3)は[1、5、1]を返す必要があります。
駆逐艦([3、5、1、2、2]、2、3、5)は戻る必要があります[1]。
駆逐艦([2、3、2、3]、2、3)は[]を返す必要があります。
駆逐艦(["ツリー"、 "ハンバーガー"、53]、「ツリー」、53)は[「ハンバーガー」]を返す必要があります。
ここにあなたを助けるいくつかのリソースがあります:
•引数オブジェクト
•array.filter()
function Destroyer(arr){//すべての値を削除var temparguments = arguments; return arr.filter(function(entry){for(var i = 1; i <temparguments.length; i ++){if(entry == temparguments [i]){return false;}} return true;});}破壊者([1、2、3、1、2、3、3]、2、3);9。どこに属しますか
私はどこにいますか?
最初にアレイを並べ替えてから、アレイの位置で指定された値を見つけ、最後に場所に対応するインデックスを返します。
たとえば、([1,2,3,4]、1.5)は1.5が配列に挿入され[1、2、3、4]に挿入され、[1、1.5、2、3、4]になり、1.5に対応するインデックス値は1です。
同様に、ここで、([20,3,5]、19)は2を返す必要があります。アレイは最初に[3,5,20]、19がアレイに挿入され[3,5,20]、[3,5,19,20]になり、19に対応するインデックス値は2です。
ここにあなたを助けるいくつかのリソースがあります:
•array.sort()
where(arr、num){//このソートアレイで私の場所を見つけます。 // sort()sort()sort rule arr.sort(function(a、b){return a- b;}); for(var i = 0; i <arr.length; i ++){if(arr [i]> num | arr [i] == num){return i; }} return arr.length;} where([5、3、20、3]、5);10.Caesars暗号
神が神に属し、シーザーはシーザーに属します。
次に、世界中で人気のあるシフトパスワードとも呼ばれるCaesarパスワードCaesar Cipherを紹介します。
シフトパスワードは、パスワード内の文字が指定された番号に従ってシフトされることを意味します。
一般的なケースはROT13パスワードであり、文字は13のポジションでシフトされます。 'a'↔ 'n'、 'b'↔ 'o'などによって。
ROT13関数を書き込み、入力暗号化された文字列を実装し、復号化された文字列を出力します。
すべての文字は大文字で、文字以外の文字を変換しません(たとえば、スペース、句読点)。これらの特殊文字に遭遇した場合は、スキップしてください。
例えば:
ROT13( "Serr PBQR PNZC")は「フリーコードキャンプ」にデコードする必要があります
ROT13( "Serr CVMMN!")は、「無料ピザ!」としてデコードする必要があります。
rot13( "Serr ybir?")は「自由な愛?」として解読する必要があります。
rot13( "gur dhvpx oebja qbt whzcrq bire gur ynml sbk。)は、「クイックブラウンドッグが怠zyなキツネを跳ね上がった」として解読する必要があります。
ここにあなたを助けるいくつかのリソースがあります:
•string.charcodeat()
•string.fromCharcode()
関数ROT13(str){// lbh qvq vg! var arr = str.touppercase()。split( ""); var str1 = []; for(var i = 0; i <arr.length; i ++){var arr1 = arr [i] .split( ""); for(var j = 0; j <arr1.length; j ++){var num = arr1 [j] .charcodeat(); if(num> = 65 && num <= 90){arr1 [j] = num + 13> 90? String.FromCharcode(64 +(num + 13-90)):String.FromCharcode(num + 13); // 64 +(num + 13-90)それが64である理由を理解するために}} str1.push(arr1.join( "")); } return str1.join( "");} //以下の入力をtestrot13( "serr pbqr pnzc");上記の記事では、JSの文字と配列のいくつかの基本的なアルゴリズムの問題について簡単に説明します。私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。