单词中重复出现字母频率最高的字符串
String with the highest frequency of recurring letters in a word
这对coderbyte来说是一个挑战,我想我应该尝试使用与循环、对象不同的方法来解决它。它过去了,但并不完美。挑战的方向是:
让函数LetterCountI(str)接受正在传递的str参数,并返回重复字母数最多的第一个单词。例如:"今天,是有史以来最伟大的一天!"应该返回great,因为它有2个e(和2个t),而且它在之前也有2个。如果没有重复字母的单词,则返回-1。单词将用空格分隔
function LetterCountI(str){
var wordsAndLetters = {};
var count = 0;
var finalword;
str = str.split(" ");
for(var i = 0; i < str.length; i++){
wordsAndLetters[str[i]] = wordsAndLetters[str[i]] || 0;
}
function countWordLetters(strs){
strs = strs.split("");
var lettercount = {};
for(var i = 0; i <strs.length; i++){
lettercount[strs[i]] = lettercount[strs[i]] || 0;
lettercount[strs[i]]++;
}
return lettercount;
}
for(var words in wordsAndLetters){
wordsAndLetters[words] = countWordLetters(words);
var highestLetterFrequency = wordsAndLetters[words];
for(var values in highestLetterFrequency){
if(highestLetterFrequency[values] > count){
count = highestLetterFrequency[values];
finalword = words;
}
if(count !== 1){
return finalword;
}
}
}
return -1;
}
LetterCountI("today is the greatest day ever!");
很抱歉,如果有些变量名令人困惑,我已经花了太长时间试图弄清楚我做错了什么。如果你使用代码底部的参数,它会返回"最大",就像它应该将参数更改为一样
LetterCountI("toddday is the greatttttest day ever!");
当它应该记录"greatttttest"时,它会记录"todday"。我的代码完全错了吗?我意识到,如果参数是("caatt-dooog"),它应该记录"caatt",因为有4个重复出现的字母,但我并不担心,我只是担心它会发现一个字母的重复次数最多(但无论如何,如果你有解决方案,我很想听!)。如果需要对变量进行任何更改以提高代码的可读性,我们将不胜感激!
代码的问题在于以下代码部分的定位:
if(count !== 1){
return finalword;
}
将其从当前位置移动到return -1
之前,如下所示:
for(var words in wordsAndLetters){
wordsAndLetters[words] = countWordLetters(words);
var highestLetterFrequency = wordsAndLetters[words];
for(var values in highestLetterFrequency){
if(highestLetterFrequency[values] > count){
count = highestLetterFrequency[values];
finalword = words;
}
}
}
if(count !== 1){
return finalword;
}
return -1;
原始代码的问题是,您返回的第一个单词包含重复字符,这意味着您的代码没有足够的距离来检查后续单词是否包含更多重复字符。
此外,为了好玩,这里是我的替代解决方案。
开始
Array.prototype.getUnique = function(){
var u = {}, a = [];
for(var i = 0, l = this.length; i < l; ++i){
if(u.hasOwnProperty(this[i])) {
continue;
}
a.push(this[i]);
u[this[i]] = 1;
}
return a;
}
function LetterCountI(str){
var temp = str.split(" ");
var final = '', weight = 0;
for(var i = 0; i < temp.length; ++i) {
var word = temp[i].split("");
if(word.getUnique().length < word.length) {
var diff = word.length - word.getUnique().length;
if(diff > weight){
weight = diff;
final = temp[i];
}
}
}
return final;
}
console.log(LetterCountI("Catt dooog"));
console.log(LetterCountI("toddday is the greatttttest day ever!"));
Viva LinQ!!!!!
var resultPerWord = new Dictionary<string, int>();
var S = "toddday is the greatttttest day ever!";
foreach(var s in S.Split(' '))
{
var theArray =
from w in s
group w by w into g
orderby g.Count() descending
select new { Letter = g.Key, Occurrence = g.Count() };
resultPerWord.Add(s, theArray.First().Occurrence);
}
var r = "-1";
if (resultPerWord.Any(x => x.Value >1))
{
r = resultPerWord.OrderByDescending(x => x.Value).First().Key;
}
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- 如何将字符串值从php页面发送到java脚本页面
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 对id以某个字符串开头的元素进行计数
- Javascript逻辑运算符和字符串/数字
- 反向字符串比较
- 如何有效地将游戏数据存储在URL查询字符串中
- 可变大小的JavaScript字符串如何成为基元类型
- 将DOM节点值与字符串Javascript进行比较
- 如何在 Javascript 中将变量的值从字符串转换为整数
- 本地存储中的字符串到字节数组转换
- 单词中重复出现字母频率最高的字符串
- 使用 JavaScript 计算字符串中字符的频率
- 按频率排序子字符串数组-JS
- Javascript——计算每个字符串表达式的频率,并从最大到最小打印出来