저는 C#에서 초보자입니다. 입력 한 문자열에서 단어를 추출하는 프로그램을 작성하려고했는데 단어 길이를 입력하여 단어 출력을 필터링하는 최소 길이를 입력해야했습니다 ... 내 코드가 잘 보이지 않거나 직관적이지 않다. 두 개의 배열을 사용하여 countStr
단어를 저장할 때 각 단어에 대응하는 단어 길이를 저장한다. 그러나 문제는 두 개의 배열 대신 해시 테이블을 사용해야한다. 사용자가 입력 한 문자열 길이에 따라 다르다. 메모리 나 다른 무언가에 대해 너무 안전하지 않다고 생각 하는가?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
@rafael : 좋은 질문입니다. 완전한 대답은 꽤 길지만 간단히 말해서, 내 이유는 var를 사용하면 * 메커니즘 *에 대한 코드의 의미 *를 더욱 강조한다는 것입니다. 말은 무엇인가? 누가 신경 쓰겠 니? 단어 모음이므로이 알고리즘의 목적에 대해 걱정할 필요가 있습니다. longWords 무엇입니까? 누가 신경 쓰겠 니? 그것은 "단어"를 필터링 한 결과이며 걱정해야 할 것이 전부입니다. 문자열 []이든 목록이든 IEnumerable 이든 IList 이든 다른 것일까 요? 아닙니다. 중요한 것은 스토리지의 의미가 아니라 의미입니다. –