右、私はコードを実行しています。 "codewarriors"が "io"のように最長母音部分文字列の長さを返すことが目的です私はそれを解決した方法は、非母音をスペースで置き換え、母音を配列に残して分割し、この配列をループし、最初の部分文字列を別の配列にプッシュすることで、別のループを設定します最初の配列の値をループし、2番目の配列で長さをチェックし、必要に応じて最長の配列に置き換えます。コードワードの挑戦 - 最長母音サブ文字列
これは最初の値(他の値と比較する値)をプッシュしているので問題に遭遇しましたが、2番目のループで置き換えなければならないのは置き換えが必要な値です最初の値が最も長い場合、配列はオブジェクトになります。2番目のループで置換する必要がある場合は置換されますが、文字列に変換されます。これは、長さを与える終了のreturn文がlongest.lengthと、最長の[0] .lengthとの間で変更します。最後にtypeofを条件付きでチェックして周りに乗りましたが、周りに別の方法があるのでしょうか?
私は初心者ですので、上記を少し混乱させると私を許し、挑戦を解決するための他の方法のヒントは大歓迎です。
これは動作しないコードである -
function longestVowel(str) {
var seperateVowels = str.replace(/[bcdfghjklmnpqrstvwxyz]/ig, ' ');
var split = seperateVowels.split(" ");
var longest = [];
for(var i = 0; i < split.length; i++) {
if(longest.length === 0 && split[i] != "") {
longest = split[i];
} for(var j = 0; j < longest.length; j++) {
if(split[i].length > longest[j].length) {
longest = split[i];
}
}
}
return longest.length;
}
そして、ここでは、周りの私の仕事である -
function longestVowel(str) {
var seperateVowels = str.replace(/[bcdfghjklmnpqrstvwxyz]/ig, ' ');
var split = seperateVowels.split(" ");
var longest = [];
for(var i = 0; i < split.length; i++) {
if(longest.length === 0 && split[i] != "") {
longest.push(split[i]);
} for(var j = 0; j < longest.length; j++) {
if(split[i].length > longest[j].length) {
longest = split[i];
}
}
}
if(typeof longest == "object") {
return longest[0].length;
} else {
return longest.length;
}
}
longestVowel("suoidea");
@ヴァサン:あなたはトラバース中に見た最も高いカウンターバリューを追跡する必要があることを忘れてしまった。 – MrSmith42
長さを指定したい場合は、最初の位置でカウンタを開始し、文字列をたどって、母音以外が表示された場合はカウンタをリセットしないでください。リセットする前に、現在のカウンタ値が現在の最大値より大きい場合、カウンタを 'max'変数に格納してください。ありがとう@ MrSmith42 – Vasan
非常に助けてくれてありがとうVasanこれははるかに良い方法です! –