Обратная строка без обращения специальных символов с использованием Javascript - PullRequest
2 голосов
/ 21 марта 2019

Я не могу найти проблему в этом коде. Я хочу перевернуть строку, не меняя специальных символов. Таким образом, если строка равна 'ab#$cd!', вывод будет 'dc#$ba!', вывод, который я получаю, равен 'ab#$cd!' (совпадает с вводом).

Пожалуйста, найдите проблему в коде.

function isAlphabet(x) {

  if ((x >= 'A' && x <= 'Z') || (x >= 'a' && x <= 'z')) {
    return true
  } else {
    return false
  }
}

function reverse() {
  var string1 = [];
  string1 = 'ab#$cd!'

  var n = string1.length;
  var r = n - 1;
  var i = 0;

  while (i < r) {

    if (!isAlphabet(string1[i])) {
      i++;
    } else if (!isAlphabet(string1[r])) {
      r--;
    } else {
      var temp;
      temp = string1[i];
      string1[i] = string1[r];
      string1[r] = temp;
      i++;
      r--;
    }
  }
  return string1;
}

console.log(reverse());

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Вы не можете изменить строку таким образом, строки неизменны в JavaScript

var str = "abcdef";
console.log(str[1])
str[1] = "x"

console.log(str)

Измените строку на массив, измените массив и затем присоединитесь к нему:

var str = "abcdef", arr = str.split("");
console.log(arr[1])
arr[1] = "x"

console.log(arr.join(""))

Ваш пример (рассмотрим переименование переменных - я оставил оригинальные имена):

function isAlphabet(x) {

  if ((x >= 'A' && x <= 'Z') || (x >= 'a' && x <= 'z')) {
    return true
  } else {
    return false
  }
}

function reverse() {
  var string1 = [];
  string1 = 'ab#$cd!'.split("")

  var n = string1.length;
  var r = n - 1;
  var i = 0;

  while (i < r) {

    if (!isAlphabet(string1[i])) {
      i++;
    } else if (!isAlphabet(string1[r])) {
      r--;
    } else {
      var temp;
      temp = string1[i];
      string1[i] = string1[r];
      string1[r] = temp;
      i++;
      r--;
    }
  }
  return string1.join("");
}

console.log(reverse());
0 голосов
/ 21 марта 2019

Вот фрагмент кода, в котором используются методы split (), pop (), push () и reverse ().

 function reverseString(str){
    var splitString, exclamationMark, reverseArray, joinArray;
    splitString = str.split("");
    exclamationMark = splitString.pop();
    reverseArray = splitString.reverse();
    reverseArray.push(exclamationMark);
    joinArray = reverseArray.join("");
    return joinArray;
 }
 console.log(reverseString("ab#$cd!"));
...