我是C#的初學者,我試圖編寫一個程序,從輸入的字符串中提取單詞,用戶必須輸入單詞的最小長度以過濾單詞輸出...我的代碼看起來不好或直觀,我用兩個數組countStr
來存儲單詞,countArr
來存儲對應於每個單詞的單詞長度..但問題是我需要使用哈希表而不是這兩個數組,因爲它們的大小取決於用戶輸入的字符串長度,我認爲這對內存不太安全?在Hashtable實現中需要幫助
這裏是我的卑鄙的代碼,再次我試圖用一個哈希表替換這兩個數組,這怎麼可以做到?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int i = 0 ;
int j = 0;
string myString = "";
int counter = 0;
int detCounter = 0;
myString = Console.ReadLine();
string[] countStr = new string[myString.Length];
int[] countArr = new int[myString.Length];
Console.Write("Enter minimum word length:");
detCounter = int.Parse(Console.ReadLine());
for (i = 0; i < myString.Length; i++)
{
if (myString[i] != ' ')
{
counter++;
countStr[j] += myString[i];
}
else
{
countArr[j] = counter;
counter = 0;
j++;
}
}
if (i == myString.Length)
{
countArr[j] = counter;
}
for (i = 0; i < myString.Length ; i++)
{
if (detCounter <= countArr[i])
{
Console.WriteLine(countStr[i]);
}
}
Console.ReadLine();
}
}
}
感謝您提供的信息豐富的答案,但我有一個問題,請問,爲什麼你經常在減速時使用var而不是字符串和字符串[]? – rafael 2010-04-06 20:22:29
@rafael:好問題。完整的答案會很長,但是簡單地說,我的理由是使用var進一步強調了*機制*上代碼的*意義*。什麼是文字?誰在乎?這是一個詞的集合,這就是你需要擔心的算法的目的。什麼是長詞?誰在乎?這是過濾「單詞」的結果,這就是你需要擔心的一切。它是字符串[]還是列表或IEnumerable 或IList 還是別的?不重要的是它的意義,而不是它的存儲細節。 –
2010-04-06 20:26:47