此代码的目标是找出所需的删除 保持字符串没有相同的字符。
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
是对的。你能告诉我这次尝试的问题是什么吗?
答案 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);