Hướng dẫn palindrome counter hackerrank javascript - palindrome truy cập hackerrank javascript

Tôi hiện đang cố gắng giải quyết Thử thách Chỉ số Palindrom HackerRank. https://www.hackerrank.com/challenges/palindrom-index/probol

Chức năng của tôi dường như đang trả về "không xác định" thay vì giải pháp (chỉ mục nên được thay đổi để chuỗi trở thành một palindrom. Tại sao?

function palindromeIndex(s) {
    // Write your code here
    const reverse = (string) => s.split("").reverse().join("");
    var reversed = reverse(s);
    if (reversed === s) {
        return -1;
    } else {
        for (let i = 0; i < s.length; i++) {
            // splice the array to remove index i and then compare 
            let myArray = s.split("");
            if ((myArray.splice(i, 1).join("")) === reverse(myArray.splice(i, 1).join(""))) {
                return i;
            } 
        } ;
    }

}

console.log(palindromeIndex("racezcar"));

Hướng dẫn palindrome counter hackerrank javascript - palindrome truy cập hackerrank javascript

skyline3000

7.4392 Huy hiệu vàng23 Huy hiệu bạc33 Huy hiệu Đồng2 gold badges23 silver badges33 bronze badges

hỏi ngày 2 tháng 9 năm 2021 lúc 21:32Sep 2, 2021 at 21:32

1

  1. Hàm reverse của bạn luôn hoạt động trên cùng một tham số đầu vào s cho hàm, bởi vì tham số cục bộ của hàm đảo ngược sẽ được gọi là string. Do đó, bất cứ khi nào bạn gọi reverse(something), bạn sẽ lấy lại được đầu vào ban đầu đảo ngược.

  2. Bạn dường như có một sự hiểu lầm về cách Array.splice hoạt động.

    • nó hoạt động tại chỗ IE sửa đổi mảng bạn gọi nó trên
    • nó trả về các phần tử bị loại bỏ chứ không phải mảng đã sửa đổi

    Trong trường hợp của bạn, có vẻ dễ sử dụng substr thay vì nối ...

function palindromeIndex(s) {
    // Write your code here
  const reverse = (string) => string.split("").reverse().join("");
  if (s === reverse(s)) {
    return -1;
  } else {
    for (let i = 0; i < s.length; i++) {
      let spliced = s.substr(0, i) + s.substr(i+1);
      if (spliced === reverse(spliced))
        return i;
      }
  }

  //return whatever specified, when the input can't be
  //converted into a palindrome ... 
}

console.log(palindromeIndex("racezcar"));
console.log(palindromeIndex("racezcars"));

Mã này vẫn trả về

function palindromeIndex(s) {
    // Write your code here
  const reverse = (string) => string.split("").reverse().join("");
  if (s === reverse(s)) {
    return -1;
  } else {
    for (let i = 0; i < s.length; i++) {
      let spliced = s.substr(0, i) + s.substr(i+1);
      if (spliced === reverse(spliced))
        return i;
      }
  }

  //return whatever specified, when the input can't be
  //converted into a palindrome ... 
}

console.log(palindromeIndex("racezcar"));
console.log(palindromeIndex("racezcars"));
0 khi không có cách nào để biến đầu vào thành palindrom,

Đã trả lời ngày 2 tháng 9 năm 2021 lúc 21:56Sep 2, 2021 at 21:56

Derpirscherderpirscherderpirscher

Huy hiệu vàng 12k33 gold badges15 silver badges32 bronze badges

1

Lý do chức năng của bạn trả về

function palindromeIndex(s) {
    // Write your code here
  const reverse = (string) => string.split("").reverse().join("");
  if (s === reverse(s)) {
    return -1;
  } else {
    for (let i = 0; i < s.length; i++) {
      let spliced = s.substr(0, i) + s.substr(i+1);
      if (spliced === reverse(spliced))
        return i;
      }
  }

  //return whatever specified, when the input can't be
  //converted into a palindrome ... 
}

console.log(palindromeIndex("racezcar"));
console.log(palindromeIndex("racezcars"));
0 là do chức năng reverse của bạn. Có một sai lầm nhỏ khi bạn gọi s thay vì string:

const reverse = (string) => s.split("").reverse().join("");

nên được thay đổi thành:

const reverse = (string) => string.split("").reverse().join("");

Nếu không, bạn vẫn còn một chút việc phải làm để làm cho nó hoạt động như mong đợi.

Đã trả lời ngày 2 tháng 9 năm 2021 lúc 21:57Sep 2, 2021 at 21:57

Hướng dẫn palindrome counter hackerrank javascript - palindrome truy cập hackerrank javascript

Solokosolokosoloko

1891 Huy hiệu bạc12 Huy hiệu đồng1 silver badge12 bronze badges

3

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây.Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn.Tìm hiểu thêm về các ký tự unicode hai chiều

const_=require('lodash'); _ = require('lodash');
functionsolve(input,n){ solve(input, n) {
constcombinations=k_combinations(getArrayToN(input.length),n); combinations = k_combinations(getArrayToN(input.length), n);
letpalindrome=0; palindrome = 0;
for(leti=0;i (let i = 0; i < combinations.length - 1; i++) {
letcandidate=''; candidate = '';
letprevious=0; previous = 0;
for(letj=0;j (let j = 0; j < combinations[i].length; j++) {
if(combinations[i][j]===_.last(combinations[i])){ (combinations[i][j] === _.last(combinations[i])) {
candidate+=input.substring(previous,combinations[i][j]); += input.substring(previous, combinations[i][j]);
candidate+=input.substring(combinations[i][j]+1,input.length); += input.substring(combinations[i][j] + 1, input.length);
}else{ else {
candidate+=input.substring(previous,combinations[i][j]); += input.substring(previous, combinations[i][j]);
previous=combinations[i][j]+1; = combinations[i][j] + 1;
}
}
if(candidate&&candidate==candidate.split('').reverse().join('')){ (candidate && candidate == candidate.split('').reverse().join('')) {
palindrome=candidate; = candidate;
returnconsole.log(palindrome); console.log(palindrome);
}
}
console.log(palindrome);.log(palindrome);
}
functiongetArrayToN(n){ getArrayToN(n) {
constarray=[]; array = [];
for(leti=0;i (let i = 0; i < n; i++) {
array.push(i);.push(i);
}
returnarray; array;
}
functionk_combinations(set,k){ k_combinations(set, k) {
vari,j,combs,head,tailcombs; i, j, combs, head, tailcombs;
if (k> set.length || k (k > set.length || k <= 0) {
return[]; [];
}
if(k==set.length){ (k == set.length) {
return[set]; [set];
}
if(k==1){ (k == 1) {
combs=[]; = [];
for(i=0;i (i = 0; i < set.length; i++) {
combs.push([set[i]]);.push([set[i]]);
}
returncombs; combs;
}
combs=[]; = [];
for(i=0;i (i = 0; i < set.length - k + 1; i++) {
head=set.slice(i,i+1); = set.slice(i, i + 1);
tailcombs=k_combinations(set.slice(i+1),k-1); = k_combinations(set.slice(i + 1), k - 1);
for(j=0;j (j = 0; j < tailcombs.length; j++) {
combs.push(head.concat(tailcombs[j]));.push(head.concat(tailcombs[j]));
}
}
returncombs; combs;
}