使用javascript计算重复的单词
我试图解决这个练习,但我有点卡住了,这就是我现在所拥有的,我试图迭代字符串,增加索引加上每个单词一个 “编写一个函数,使用计数执行基本字符串压缩 如果出现以下情况,则重复字符(如“aabcccaaa”)将变为“a2b1c5a3” 压缩后的字符串不会比原始字符串小,只是 “打印原件”使用javascript计算重复的单词,javascript,Javascript,我试图解决这个练习,但我有点卡住了,这就是我现在所拥有的,我试图迭代字符串,增加索引加上每个单词一个 “编写一个函数,使用计数执行基本字符串压缩 如果出现以下情况,则重复字符(如“aabcccaaa”)将变为“a2b1c5a3” 压缩后的字符串不会比原始字符串小,只是 “打印原件” 函数countWords(){ var word=“aabcccaaa”; var结果=”; var计数器=0; 对于(var i=0;i你有两件事要做 首先,将循环索引增加两次。从if语句中删除i++ 其次,您需
函数countWords(){
var word=“aabcccaaa”;
var结果=”;
var计数器=0;
对于(var i=0;i你有两件事要做
首先,将循环索引增加两次。从if
语句中删除i++
其次,您需要将计数器初始化为1而不是0
这个代码似乎有效
<script>
function countWords()
{
var word = "aabcccccaaa";
var result = "";
var counter = 1;
for(var i = 0; i <= word.length; i++) {
if(word.substr(i, 1) === word.substr(i+1, 1)) {
counter++;
}
else {
result = result + word.substr(i, 1) + counter;
counter = 1;
}
}
console.log(result);
if(result.length < word.length)
console.log(result)
else
console.log(word);
}
countWords();
</script>
函数countWords()
{
var word=“aabcccaaa”;
var结果=”;
var计数器=1;
对于(var i=0;i你有两件事要做
首先,将循环索引增加两次。从if
语句中删除i++
其次,您需要将计数器初始化为1而不是0
这个代码似乎有效
<script>
function countWords()
{
var word = "aabcccccaaa";
var result = "";
var counter = 1;
for(var i = 0; i <= word.length; i++) {
if(word.substr(i, 1) === word.substr(i+1, 1)) {
counter++;
}
else {
result = result + word.substr(i, 1) + counter;
counter = 1;
}
}
console.log(result);
if(result.length < word.length)
console.log(result)
else
console.log(word);
}
countWords();
</script>
函数countWords()
{
var word=“aabcccaaa”;
var结果=”;
var计数器=1;
对于(var i=0;i
函数countChars(word){
如果(!word){
返回词;
}
var arr=字分割(“”);
var currentChar=arr[0];
var计数=1;
var压缩=”;
对于(变量i=1;iword.length){
返回词;
}
回波压缩;
}
console.log(countChars(“aabcccccaaa”);
函数countChars(word){
如果(!word){
返回词;
}
var arr=字分割(“”);
var currentChar=arr[0];
var计数=1;
var压缩=”;
对于(变量i=1;iword.length){
返回词;
}
回波压缩;
}
console.log(countChars(“aabcccccaaa”);
可以使用reduce函数完成:
let word = 'aabcccccaaa';
let chars = word.split('');
let counter = 1;
let occur = 0;
let result = chars.reduce(function(prevValue, currValue, index, array) {
let isLastChar = array.length - 1 === index;
if (prevValue.substr(prevValue.length - 1) !== currValue) {
occur = counter;
counter = 1;
prevValue = prevValue + occur + currValue;
return isLastChar ? prevValue + 1 : prevValue
} else {
counter++;
return isLastChar ? prevValue + counter : prevValue;
}
});
可以使用reduce功能完成此操作:
let word = 'aabcccccaaa';
let chars = word.split('');
let counter = 1;
let occur = 0;
let result = chars.reduce(function(prevValue, currValue, index, array) {
let isLastChar = array.length - 1 === index;
if (prevValue.substr(prevValue.length - 1) !== currValue) {
occur = counter;
counter = 1;
prevValue = prevValue + occur + currValue;
return isLastChar ? prevValue + 1 : prevValue
} else {
counter++;
return isLastChar ? prevValue + counter : prevValue;
}
});
您可以使用正则表达式、数组中的reduce和条件三元函数的强大功能
function compress(input) {
var re = /(.)\1+|./gi;
var match = input.match(re);
var output = match.reduce(function (previousValue, currentValue) {
return previousValue + (currentValue.charAt(0) + currentValue.length);
}, "");
output = (output.length < input.length) ? output : input;
return output;
}
console.log(compress("aabcccccaaa"));
函数压缩(输入){
变量re=/()\1+|/gi;
变量匹配=输入。匹配(re);
var输出=匹配.reduce(函数(先前值、当前值){
返回previousValue+(currentValue.charAt(0)+currentValue.length);
}, "");
输出=(output.length
您可以使用Regex的强大功能,减少数组和条件三元数
function compress(input) {
var re = /(.)\1+|./gi;
var match = input.match(re);
var output = match.reduce(function (previousValue, currentValue) {
return previousValue + (currentValue.charAt(0) + currentValue.length);
}, "");
output = (output.length < input.length) ? output : input;
return output;
}
console.log(compress("aabcccccaaa"));
函数压缩(输入){
变量re=/()\1+|/gi;
变量匹配=输入。匹配(re);
var输出=匹配.reduce(函数(先前值、当前值){
返回previousValue+(currentValue.charAt(0)+currentValue.length);
}, "");
输出=(output.length
这是您修复了这些错误的代码
计数器
从0开始
因此计数将减少1
类似于1)
,每次将计数器设置回0
,而不是1
在for循环内递增i
,因此跳过值
函数countWords(){
var word=“aabcccaaa”;
var结果=”;
var计数器=1;
对于(var i=0;i这是您修复了这些错误的代码
计数器
从0开始
因此计数将减少1
类似于1)
,每次将计数器设置回0
,而不是1
在for循环内递增i
,因此跳过值
函数countWords(){
var word=“aabcccaaa”;
var结果=”;
var计数器=1;
对于(var i=0;i
var inputString=“Javascript”,
searchChar,count=0;
AccuranceRepeat(输入字符串);
函数AccuranceRepeat(inputString){
对于(变量i=0;i
var inputString=“Javascript”,
searchChar,count=0;
AccuranceRepeat(输入字符串);
函数AccuranceRepeat(inputString){
对于(变量i=0;i } <代码>不是一个问题。定义你的问题。你的代码是如何工作的?你需要什么帮助?你可能会发现这有帮助:不是一个问题。定义你的问题。你的代码是如何工作的?什么标准?