Длина наименьшего слова в строке - C#
Формулировка задачи:
Добрый вечер. Здесь на форуме нашел вот такой код. Он для задачи: "Даны натуральное число n, символы S1,...........,Sn. группы символом, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Найти длину самого короткого слова". Так как я совсем-совсем новичок, то мне этот код не очень понятен. И такие вопросы: 1) как в данном случае заменить foreach на for?
2) непонятны строки:
"string[] words = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
int max = words[0].Length, min = words[0].Length; "
На что их можно заменить? хотелось бы как можно проще и понятней написать код, пускай даже будет много строк. хочется самому вникнуть в программу, а не тупо списать. Спасибо.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите строку:");
string line = Console.ReadLine();
string[] words = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
int max = words[0].Length, min = words[0].Length;
foreach(string str in words)
{
if (str.Length > max) max = str.Length;
if (str.Length < min) min = str.Length;
}
Console.WriteLine("Длина самого длинного слова: " + max);
Console.WriteLine("Длина самого короткого слова: " + min);
Console.ReadLine();
}
}
}Решение задачи: «Длина наименьшего слова в строке»
textual
Листинг программы
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите строку:");
string line = Console.ReadLine();
var tokenizer = new Tokenizer(line);
var minlen = int.MaxValue;
var maxlen = 0;
var str = tokenizer.GetToken();
while (str != String.Empty)
{
if (str.Length > maxlen) maxlen = str.Length;
if (str.Length < minlen) minlen = str.Length;
str = tokenizer.GetToken();
}
Console.WriteLine("Длина самого длинного слова: " + maxlen);
Console.WriteLine("Длина самого короткого слова: " + minlen);
Console.ReadKey();
}
}
public class Tokenizer
{
private string _str;
private int _pos;
public Tokenizer(string str)
{
_str = str;
_pos = 0;
}
public string GetToken()
{
if (_pos == _str.Length)
{
return String.Empty;
}
while (_pos < _str.Length && _str[_pos] == ' ')
{
_pos++;
}
if (_pos == _str.Length)
{
return String.Empty;
}
var token = String.Empty;
while (_pos < _str.Length && _str[_pos] != ' ')
{
token += _str[_pos];
_pos++;
}
return token;
}
}