좋아요. 회문문은 철자가 같은 단어입니다. 만약 우리가 같은 문장을 뒤로 거치고 싶다면 어떻게해야할까요? 그래서 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;
}
내 오류 어디? ,
function isPal(string){
string = string.split(" ").join(""); // remove all spaces
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;
}
isPal("a man a plan a canal panama"); // true
를 예상대로 작동합니다 :(여기에 내가 ... 한 기능 isPalindrome (문자열) { var에 도착 = 문자열 내용은 다음과 같습니다 교체합니다. {arr.splice (i, 1); } else if (i = 0; (arr [i]! = arr [arr.length - i - 1]) { \t false를 반환합니다. } } return true; } – bikedres
'자동차 경주'에서이 코드를 실행한다고 가정하면 코드가 'e'를 치기 전에 코드가 공백을 치게됩니다. 따라서 else로 이동하고 'e'를 ''와 일치시키고 false를 반환합니다. 'r acecar'에서 코드를 실행하면 true를 반환합니다. 공간이 문자열의 중간 지점보다 앞에있는 한 계속 작동합니다. 제 조언은 회문을 확인하기 전에 공백을 제거하는 것입니다. 또한 일반적으로 배열을 반복하는 루프 내부에서 (항목을 제거하여) 배열의 길이를 수정하는 것은 좋지 않은 생각이었습니다. –