Wie kann ich nach einem "fast Palindrome" mit genau einem Charakter -Nichtübereinstimmung suchen? [geschlossen]JavaScript

Javascript-Forum
Anonymous
 Wie kann ich nach einem "fast Palindrome" mit genau einem Charakter -Nichtübereinstimmung suchen? [geschlossen]

Post by Anonymous »

Ich brauche eine Funktion, um festzustellen, ob eine Zeichenfolge ein fast palindrom mit genau einer Fehlanpassung des Zeichens ist. Dies bedeutet: < /p>
Die Zeichenfolge ist kein perfekter Palindrom (z. B. "RaceCar" sollte falsch zurückkehren).

Code: Select all

Examples:

Input       Output      Reason

"abca"      True        Change 'c' → 'b' to get "abba"
"abc"       False       Needs ≥2 changes (e.g., "aba" or "cbc")
"a"         False       Already a palindrome (no mismatch)
"abxa"      True        Change 'x' → 'b' to get "abba"
Einschränkungen:

Optimieren Sie für O (n) Zeit und O (1) Raum. /> Ich habe einen Zwei-Zeiger-Ansatz ausprobiert, der Fehlanpassungen zählt, aber es scheitert für Fälle, in denen das Überspringen eines Fehlpaarungsfehlers spätere Fehler versteckt: < /p>

Code: Select all

function isAlmostPalindrome(s) {
let mismatches = 0;
let left = 0, right = s.length - 1;
while (left < right) {
if (s[left] !== s[right]) {
mismatches++;
if (mismatches > 1) return false;
}
left++;
right--;
}
return mismatches === 1; // Rejects perfect palindromes
}
Ausgabe:
fällt für "ABC" fehl. Fälle gehandhabt (ungerade /sogar Längen, ein einzelnes Zeichen).

Code: Select all

function isAlmostPalindrome(s) {
let mismatches = 0;
let left = 0, right = s.length - 1;
while (left < right) {
if (s[left] !== s[right]) {
mismatches++;
if (mismatches > 1) return false;
}
left++;
right--;
}
return mismatches === 1; // Rejects perfect palindromes
}

console.log(isAlmostPalindrome("abca"));
console.log(isAlmostPalindrome("abc"));
console.log(isAlmostPalindrome("a"));
console.log(isAlmostPalindrome("abxa"));
console.log(isAlmostPalindrome("racecar"));

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post