using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MorseCode
{
public class MorseCodeConverter
{
public Dictionary<string, string> morseCode;
public MorseCodeConverter()
{
LoadMorseCode();
}
private void LoadMorseCode()
{
morseCode = new Dictionary<string, string>();
morseCode.Add("a", ".-");
morseCode.Add("b", "-...");
morseCode.Add("c", "-.-.");
morseCode.Add("d", "-..");
morseCode.Add("e", ".");
morseCode.Add("f", "..-.");
morseCode.Add("g", "--.");
morseCode.Add("h", "....");
morseCode.Add("i", "..");
morseCode.Add("j", ".---");
morseCode.Add("k", "-.-");
morseCode.Add("l", ".-..");
morseCode.Add("m", "--");
morseCode.Add("n", ".-");
morseCode.Add("o", "---");
morseCode.Add("p", ".--.");
morseCode.Add("q", "--.-");
morseCode.Add("r", ".-.");
morseCode.Add("s", "...");
morseCode.Add("t", "-");
morseCode.Add("u", "..-");
morseCode.Add("v", "...-");
morseCode.Add("w", ".--");
morseCode.Add("x", "-..-");
morseCode.Add("y", "-.--");
morseCode.Add("z", "--..");
morseCode.Add("1", ".----");
morseCode.Add("2", "..---");
morseCode.Add("3", "...--");
morseCode.Add("4", "....-");
morseCode.Add("5", ".....");
morseCode.Add("6", "-....");
morseCode.Add("7", "--...");
morseCode.Add("8", "---..");
morseCode.Add("9", "----.");
morseCode.Add("0", "-----");
}
/// <summary>
/// Returns a translated word from English to Morse code.
/// </summary>
/// <param name="word">Word to be translated.</param>
/// <returns>A string of Morse code.</returns>
public string Translate(string word)
{
foreach (char letter in word)
{
StringBuilder morse = new StringBuilder();
morse.Append(morseCode[letter.ToString()]);
return morse.ToString();
}
return String.Empty;
}
}
}
私はこの週末に退屈し、モールスコードアプリを構築しています。このコードはどこで改善できますか?
私はStringBuilderを使用しているので、すべての文字連結で新しい文字列オブジェクトを作成することはありませんが、十分に使用していないようです。
私が作ることができる目立つ改善はありますか?
なぜ 'Dictionary'を使用しないのですか? Btwでは、単語のすべての文字に対して 'char.ToString()'を呼び出すことによってガベージを作成しています。 –
Ani
あなたは最初の文字だけを返しています、それは望ましい動作ですか? – nan
これを改善する1つの方法は、 'n'表現を修正することです:)現在は' a'と同じですが、実際には '_'です。 – kichik