यह वह कोड है जिसकी मैंने कोशिश की है। अगर हम इनपुट करते हैं "हम किसान हैं!" इसे "! s rem raferaeW" वापस करना चाहिए, हालांकि मेरे पास जो कोड है वह "! s remr aferaeW" लौटाता है

function reverseStr(input){

  var array1 = [];  
  var array2 = [];
  var nWord;
  for (var i = 0; i < input.length; i++) {

    array1.push(input[i]);

  }

  var spaces = [];

    for (var i = 0; i < array1.length; i++) {
        if(array1[i] == " ") {
            spaces.push(i);
        }
    }

  console.log(array1);
  console.log(spaces);

  array2 = array1.slice().reverse();

  var spaces2 = [];

  for (var i = 0; i < array1.length; i++) {
        if(array2[i] == " ") {
            spaces2.push(i);
        }
    }

  console.log(spaces2);

  for (var i = spaces2.length - 1; i >=0; i--) {
      array2.splice(spaces2[i], 1);
  }

  console.log(array2);

  nWord = array2.join('');

  console.log(nWord);

  var array3 = [];

  for (var i = 0; i < nWord.length; i++) {
      array3.push(nWord[i]);
  }

  console.log(array3);

  for (var i = spaces.length - 1; i >=0; i = i - 1) {
      array3.splice(spaces[i], 0, " ");
  }

  console.log(array3);

  var anWord = array3.join('');
  return anWord;

}

var input = "We are farmers!";
reverseStr(input);

सबसे पहले मैंने इनपुट के प्रत्येक अक्षर को "array1" पर एक सरणी में धकेल दिया। फिर मैंने "सरणी 1" के रिक्त स्थान की अनुक्रमणिका के लिए एक सरणी बनाई जिसे "रिक्त स्थान" कहा जाता है।

फिर "सरणी 2" उलट "सरणी 1" की एक सरणी है।

फिर "स्पेस 2" "सरणी 2" के लिए इंडेक्स की एक सरणी है और फिर मैंने सरणी 2 में रिक्त स्थान को विभाजित करने के लिए लूप के लिए उपयोग किया। फिर "nWord" एक नया शब्द बनाने के लिए "array2" संयुक्त है।

फिर "array3" nWord के सभी अक्षरों के लिए एक सरणी है और मैंने "array3" में रिक्त स्थान इनपुट करने और "रिक्त स्थान" सरणी के अनुक्रमणिका का उपयोग करने के लिए लूप के लिए एक रिवर्स का उपयोग किया। दुर्भाग्य से, यह "!s rem raferaeW" वापस नहीं कर रहा है और IS "!s remr aferaeW" लौटा रहा है।

मैं यह जानने की कोशिश कर रहा हूं कि इंडेक्स 2 और 7 पर "सरणी 3" में रिक्त स्थान बनाने के लिए मैं "रिक्त स्थान" सरणी की अनुक्रमणिका का उपयोग कैसे कर सकता हूं।

1
Neil 31 मार्च 2020, 20:00

1 उत्तर

सबसे बढ़िया उत्तर

आपको बस निम्नलिखित परिवर्तन करने की आवश्यकता है

 //for (var i = spaces.length - 1; i >=0; i = i - 1) {
  //    array3.splice(spaces[i], 0, " ");
  //}

  for (var i = 0; i < spaces.length; i = i + 1) {
      array3.splice(spaces[i], 0, " ");
  }

आप रिक्त स्थान सरणी को उल्टा पढ़ रहे हैं लेकिन जैसा कि समस्या बताई गई है कि रिक्त स्थान एक ही स्थान पर होना चाहिए। इसे शुरू से अंत तक पढ़ने से समस्या ठीक हो गई।

function reverseStr(input){

  var array1 = [];  
  var array2 = [];
  var nWord;
  for (var i = 0; i < input.length; i++) {

    array1.push(input[i]);

  }

  var spaces = [];

    for (var i = 0; i < array1.length; i++) {
        if(array1[i] == " ") {
            spaces.push(i);
        }
    }

  console.log(array1);
  console.log(spaces);

  array2 = array1.slice().reverse();

  var spaces2 = [];

  for (var i = 0; i < array1.length; i++) {
        if(array2[i] == " ") {
            spaces2.push(i);
        }
    }

  console.log(spaces2);

  for (var i = spaces2.length - 1; i >=0; i--) {
      array2.splice(spaces2[i], 1);
  }

  console.log(array2);

  nWord = array2.join('');

  console.log(nWord);

  var array3 = [];

  for (var i = 0; i < nWord.length; i++) {
      array3.push(nWord[i]);
  }

  console.log(array3);

  //for (var i = spaces.length - 1; i >=0; i = i - 1) {
  //    array3.splice(spaces[i], 0, " ");
  //}
  
  for (var i = 0; i < spaces.length; i = i + 1) {
      array3.splice(spaces[i], 0, " ");
  }

  console.log(array3);

  var anWord = array3.join('');
  return anWord;

}

var input = "We are farmers!";
reverseStr(input);
1
Tanmay_vijay 31 मार्च 2020, 17:36