【发布时间】:2021-11-03 01:48:24
【问题描述】:
我有一个学校作业,我需要计算每个字母在 txt 文件中出现的次数,我不能使用字典,也不能使用 LinQ,然后我需要按字母顺序排列,并且按迭代顺序。
string = "hello world"
output =
D=1
E=1
H=1
L=3
O=2
R=1
W=1
L=3
O=2
D=1
E=1
H=1
R=1
W=1
到目前为止,我所拥有的仅适用于按字母顺序排列,而不适用于迭代。
public void testChar() {
string text = File.ReadAllText(@ "C:\Ecole\Session 2\Prog\Bloc 4\test.txt")?.ToUpper();
text = Regex.Replace(text, @ "[^a-zA-Z]", "");
List < char > listChar = new List < char > ();
foreach(char lettre in text) {
listChar.Add(lettre);
}
int countPosition = 0;
List < int > position = new List < int > ();
listOfChar.Add(listChar[0]);
listOfRepetitions.Add(1);
position.Add(countPosition);
int jumpFirstItteration = 0;
foreach(var item in listChar) {
if (jumpFirstItteration == 0) {
jumpFirstItteration++;
}
if (listOfChar.Contains(item)) {
int pos = listOfChar.IndexOf(item);
listOfRepetitions[pos] += 1;
} else if (!listOfChar.Contains(item)) {
listOfChar.Add(item);
listOfRepetitions.Add(1);
countPosition++;
position.Add(countPosition);
}
}
}
请帮忙:D
【问题讨论】:
-
他们可能希望您使用一个
int数组,其中索引 0 = a、1 = b 等等,并在您看到字符时增加数组的索引。就像var count = new int[26]; foreach(var c in text) count[c - 'a']++;一样,假设所有字符都是 a 到 b 小写。 -
@juharr 按字母顺序对这种数组进行排序并保留频率会变得很棘手
-
@Sébastien 它已经按字母顺序排列。它只需要一些工作来对频率进行排序,同时跟踪原始索引以获得第二次排序。
-
@juharr,对,我的意思是“按频率顺序排序很棘手”,而不是“按字母顺序”。
标签: c# list sorting dictionary