认识并统计规范。人物

时间:2015-05-15 23:13:36

标签: javascript loops replace

此代码的目标是找出所需的删除 保持字符串没有相同的字符。

  

ababa = 0 abaaab = 2且aaaa = 3

var input ="abababaaaabaaab";
var sringl = input.length;
    // input.substr(input.length)
var pos=0;
var pos2=1;

var output =0;    
while (pos < sringl) {
    console.log (input.substr(pos,1), input.substr(pos2,1));
    if (input.substr(pos,1) === input.substr(pos2,1)){
        input = input.replace(input.substr(pos2,1),"");
        --sringl
        ++output
       // ++pos
    }
    else {++pos;++pos2} console.log (output,sringl,input);
}

控制台日志是告诉我它的作用。 var

中的结果
output

是对的。你能告诉我这次尝试的问题是什么吗?

2 个答案:

答案 0 :(得分:1)

您可以使用以下功能:

var input = "abababaaaabaaab";

alert(RemoveDuplicateCharacters(input));

该功能如下所示:

function RemoveDuplicateCharacters(input) {
    // Handle empty input data
    if (input.length == 0) {
        return "";
    }

    var currentPosition = 1;
    var result = input[0];

    while (currentPosition < input.length) {
        if (input[currentPosition - 1] != input[currentPosition]) {
            result = result + input[currentPosition];
        }

        currentPosition++;
    }

    return result;
}

答案 1 :(得分:-1)

代码的问题在于,替换将删除角色的第一次出现,而不是pos2处的出现。如果您使用字符位置删除字符而不是替换字符,它将起作用:

input = input.substr(0, pos2) + input.substr(pos2 + 1);

您可以简化代码,只使用一个变量作为位置,并读取字符串长度属性,而不是为其维护变量:

var input ="abababaaaabaaab";

var output = 0;
var pos = 1;
while (pos < input.length) {
  if (input.charAt(pos - 1) === input.charAt(pos)){
    input = input.substr(0, pos) + input.substr(pos + 1);
    output++;
  } else {
    pos++;
  }
}

document.write(output + ' ' + input);