我有一系列List [String],
List(ejlo, adln, bew)
List(ejlo, alnw, bde)
List(dllo, aejn, bew)
List(dow, aejn, bell)
List(dell, ajno, bew)
需要使用Map [String,(String,Int)]检查每个单词以获取其值。
Map["ejlo", ("ejlo", 2)]
Map["bca", ("abc", 8)]
Map["ufi", ("iuf", 1)]
我需要得到每一行List [String]的总和。
我该怎么做?
更新,
喜欢第一个List(ejlo,adln,bew),
每个字符串都有一个来自Map的对应Int值,
所以现在我需要循环遍历每个List行,
并且,调用该Map(" ejlo"),它将返回Int值2,
然后,调用Map(" adln"),它将返回一个Int值n,
然后,调用Map(" bew"),它将返回一个Int值y,
而且,我需要这个List行的总和为2 + n + y,
最终,我需要计算每个List行的总和,
然后,找到最小值,并使用List String返回给定的List行。
我正在做类似下面的事情,但我知道它很慢,
var finalCircledFinalAns: List[String] = List()
var scoredCounter: Int = 99999
var counter: Int = 0
var tempList = new ListBuffer[String]()
for (elem <- CircledCombinations) {
elem.foreach{ x =>
counter += filteredCircledMap(x).map(_._2).head
tempList += filteredCircledMap(x).map(_._1).head
}
if (scoredCounter > counter) {
finalCircledFinalAns = tempList.toList
scoredCounter = counter
}
scoredCounter = 0
tempList = new ListBuffer[String]()
}
感谢。
更新
CircledCombinations.foreach(println) // There are 50 rows return
List(deen, allw, bjo)
List(abdl, ejlo, enw)
List(deew, abll, jno)
List(adej, blow, eln)
filteredCircledMap.foreach(println) // There are more than 60 rows return
(add,List((dad,4477)))
(aben,List((bean,6711)))
(elno,List((lone,9719)))
(aal,List((ala,8982)))
(dnow,List((down,310)))
(dlo,List((old,370)))
答案 0 :(得分:1)
根据我从您的描述中理解,您需要遍历某种名为NSDateFormatter *input = [[NSDateFormatter alloc] init];
[input setDateFormat : @"HH:mm:ss"];
NSDateFormatter *output = [[NSDateFormatter alloc] init];
[output setDateFormat : @"hh:mm a"];
NSString *stringTime = @"14:23:00";
NSDate *dateTime = [input dateFromString:stringTime];
NSString *result = [output stringFromDate:dateTime];
NSLog(@"%@", result);
的列表结构列表,然后您有一个名为CircledCombinations
的映射,用作从字符串到值的映射类型为int。
我假设filteredCircledMap
是一个列表清单。此外,您的映射有点奇怪:它不应该是混淆类型,而应该更简单:CircledCombinations
。
你可以做什么而不是循环并以OOP风格来思考这个问题,同样以更实用的方式来解决这个问题:
Map[String, Int]
至少从我的问题中得到的结果是,每行的每个元素的计算得分(数值都是由我发明):
val scoresForEachRow: List[List[Int]] =
CircledCombinations.map(_.map(filteredCircledMap(_).head._2))
然后,您可以映射函数List(
List(2, 5, 4),
List(5, 3, 1),
// and so on...
)
以获得每行的总和:
sum
在那里,你最终会得到这个(上面的例子):
val sumForEachRow: List[Int] = scoresForEachRow.map(_.sum)
从这里,您可以通过以下方式计算最小值:
List(
11,
9,
// and so on...
)
我认为你需要解决更多问题,但我认为这将有助于你迈出第一步。如果您愿意,可以使用val minimumVal: Int = sumForEachRow.min
跟踪字符串。
<强>更新强>
如果您还需要获得具有最小(或最大值)的字符串的实际列表,您可以使用zip
:
zip
然后,使用val sumsAndLists: List[List[String], Int] =
scoresForEachRow.zip(sumForEachRow)
:
minBy