好吧,迴文是一個拼寫反向的單詞。如果我們想要採用一個同樣向後的短語呢?所以kook
就是其中之一。 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))
。因此,這裏是我寫的,但在失敗..
function isPalindrome(string){
var arr = [];
arr.push(string.split(''));
for (i = 0; i < arr.length; i++){
if (arr[i] === ' '){
arr.splice(i, 1);
如果我回到arr
,但它仍然給了我與它的空間的字符串。我該如何做到這一點?謝謝!
編輯:使用的解決方案,但仍然得到關於「賽車」 這裏假是我得到的:
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,如果與''匹配並且返回false,則返回。 嘗試在'acecar'上運行你的代碼,它會返回true。只要空間在弦的中點之前,它就會工作。 我的建議是在檢查迴文之前去掉空格。通常認爲在循環內部修改數組的長度(通過刪除項目)是一個壞主意,它正在遍歷該數組。 –