我正試圖編寫一個算法來從特定索引處的名稱列表中刪除名稱。最初我會逐行閱讀文件。該文件將是這樣的:在特定索引處從字符串數組中刪除字符串
amelie barbon cat dog thomas | 3
raty pertw ituy |5
現在,比如說我們看到我們三(3)最後有第一線,所以在這裏我們不得不在最後讀出數字的每一行,這個數字是blackNumber
,這麼叫,因爲在讀取這個數字之後,我們必須逐個刪除這個索引處的每個字符串,直到字符串數組中剩下1個字符串。只有左邊的字符串是我們的答案。
例如: Cat
將在第一次迭代中被刪除,並且該列表將成爲
amelie barbon dog thomas
現在dog
將被刪除,然後thomas
,這兩個類似的刪除後的名單將是:
amelie barbon
到此爲止我的代碼工作正常,但現在我們必須刪除索引3和 但也有2個元素只有在列表中,這樣下次刪除櫃檯已開始像這樣:
amelie(index:1)-> barbon(index:2)->amelie(index:3)
和字符串amelie
必須被刪除,這將在列表中保持barbon
,這就是答案。 (當列表元素總數少於blackNumber時,這最後一步,那麼我不能得到如何做的邏輯)。
我曾嘗試爲如下:(這將無限運行時表計數值比blackNumber
小)
class Program
{
static void Main(string[] args)
{
using (StreamReader reader = File.OpenText("C:\\Users\\Mohit\\Desktop\\PolmStudio Tasks\\anmeDelete\\anmeDelete\\file.txt"))
while (!reader.EndOfStream)
{
List<string> list = null;
string line = reader.ReadLine(); ;
if (null != line)
{
list = new List<string>();
string[] digits = line.Split(new char[] { ' ', '\n', '|' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < digits.Count() - 1; i++)
{
list.Add(digits[i]);
}
int blacknumber = Convert.ToInt32(digits[digits.Count() - 1]) - 1;
do
{
for (int i = 0; i < list.Count(); i++)
{
if (i == blacknumber)
{
list.RemoveAt(i);
}
}
} while (list.Count > 1);
}
foreach (string str in list)
{
Console.WriteLine(str);
}
Console.WriteLine("");
}
Console.ReadKey();
}
}
你應該澄清,索引意味着數組而不是字符串(文件行)。結果只需要一個名字就能生存下來嗎? – SILENT