これは回文と同じスペルの単語です。同じ後方にあるフレーズを取りたい場合はどうすればよいですか?だからkook
は1です。 race car
は別のものです。スペースを占めるパリンドローム関数を作成しようとしています
私はスペースを考慮しないものを作った。
function isPal(string){
var l = string.length;
for (var i = 0; i < (l/2); ++i) {
if (string.charAt(i) != string.charAt(l - i - 1)){
return false;
}
}
return true;
}
これは単語に対してうまく機能します。
今私は文字列を配列にプッシュし、各文字をそれ自身の文字列に分割してから空白を削除してからif (string.charAt(i) != string.charAt(string.length - i - 1))
を実行します。私はarr
を返すのであれば、ここで私が書いたものだがでなかった。..
function isPalindrome(string){
var arr = [];
arr.push(string.split(''));
for (i = 0; i < arr.length; i++){
if (arr[i] === ' '){
arr.splice(i, 1);
、それはまだ私にスペースを含む文字列を与えます。これをどのように達成するのですか?ありがとう!
EDIT:ソリューションを使用しますが、それでもここにレースカー「 に偽得ることは、私が得たものです:
function isPalindrome(string){
var arr = string.split('');
for (i = 0; i < arr.length; i++){
if (arr[i] === ' '){
arr.splice(i, 1);
} else if (arr[i] != arr[arr.length - i - 1]){
return false;
}
}
return true;
}
私の誤りですか?
はまだ偽なっ期待どおりに動作するはずです:(ここで私がやったこと...ファンクションisPalindrome(文字列){ するvar ARR =文字列です:交換してください。 (arr [i] === ''){ arr.splice(i、1); } else if(i = 0、i
bikedres
「レースカー」でこれを実行しているとしたら、あなたのコードはスペースに当たる前に「e」に当たっています。したがって、elseに移動し、 'e'と ''を一致させてfalseを返します。 'r acecar'でコードを実行しようとすると、trueを返します。スペースが文字列の中間点の前であれば動作します。 私の助言は、回文を確認する前にスペースを取り除くことです。また、一般的には、配列内の反復処理中のループ内で(項目を削除することによって)配列の長さを変更することをお勧めしません。 –