将新列表添加到嵌套列表中
本文关键字:列表 嵌套 添加 新列表 | 更新日期: 2023-09-27 18:35:47
我正在编写一个字谜查找器程序,该程序可以识别具有相同字母的不同单词。例如:
input: ['cars', 'for', 'potatoes', 'racs', 'four', 'scar', 'creams', 'scream']
output: [ ["cars", "racs", "scar"], ["four"], ["for"],
["potatoes"], ["creams","scream"] ]
这是我目前拥有的代码。
public List<List<string>> AnagramsFinder(List<string> words)
{
List<List<string>> returnList = new List<List<string>>();
for (int i = 0; i < words.Count; i++)
{
char[] inputCharArray = words[i].ToCharArray();
Array.Sort(inputCharArray);
string inputString = new string(inputCharArray);
if (ReturnList.Contains(InputString))
{
ReturnList[InputString].Add(words[i]);
}
else
{
ReturnList.Add(InputString, new List<string>());
ReturnList[InputString].Add(words[i]);
}
}
return returnList;
}
if-else 语句是我想表达的,但它在 .NET WCF 格式中无效。谁能帮我修改if-else语句以达到相同的目的?多谢!!
C# 语言区分大小写,因此
ReturnList
与returnList
不同,InputString
与inputString
不同。
旧代码:
if (ReturnList.Contains(InputString))
{
ReturnList[InputString].Add(words[i]);
}
else
{
ReturnList.Add(InputString, new List<string>());
ReturnList[InputString].Add(words[i]);
}
好代码:
if (returnList.Contains(inputString))
{
returnList[inputString].Add(words[i]);
}
else
{
returnList.Add(inputString, new List<string>());
returnList[inputString].Add(words[i]);
}
但
if (returnList.Contains(InputString))
returnList
是字符串的嵌套列表,因此 Contains
参数无效!
所以迭代一下,
foreach( List<string> item in returnList )
{
if( item.Contains(inputString) )
...
}
更新的代码:
您可以使用以下方法查找Anagrame,然后转换为列表列表。
public static List<List<string>> GetAnagramEquivalents(List<string> InputArray)
{
Dictionary<string, List<string>> DictionaryList = new Dictionary<string, List<string>>();
List<List<string>> ReturnList = new List<List<string>>();
for (int x = 0; x < InputArray.Count; ++x)
{
char[] InputCharArray = InputArray[x].ToCharArray();
Array.Sort(InputCharArray);
string InputString = new string(InputCharArray);
if (DictionaryList.ContainsKey(InputString))
{
DictionaryList[InputString].Add(InputArray[x]);
}
else
{
DictionaryList.Add(InputString, new List<string>());
DictionaryList[InputString].Add(InputArray[x]);
}
}
foreach (var item in DictionaryList)
{
ReturnList.Add(item.Value);
}
return ReturnList;
}
看起来您正在尝试将字符串与列表进行比较
尝试:
foreach( List<string> eachList in returnList )
{
if( eachList.Contains(InputString) )
...
}