Поменять местами самое длинное и самое короткое слова в строке - C#
Формулировка задачи:
Помогите:Строка состоит из слов, разделенных одним или несколькими пробелами. Поменяйте местами наибольшее по длине слово и наименьшее.
Решение задачи: «Поменять местами самое длинное и самое короткое слова в строке»
textual
Листинг программы
- using System;
- using System.Linq;
- namespace LinqStringSwap
- {
- class Program
- {
- static void Main()
- {
- string s = "a a a a";
- var array = s.Split(' ');
- int wordMaxLength = array.Select(x => x.Length).Where(x => x > 0).Select(x => x).Max();
- string wordMax = array.Where(x => x.Length == wordMaxLength).Select(x => x).First();
- int wordMaxIndex = -1;
- while (wordMaxIndex == -1)
- {
- wordMaxIndex = s.IndexOf(wordMax + " ");
- if (wordMaxIndex != -1) break;
- wordMaxIndex = s.IndexOf(" " + wordMax + " ");
- if (wordMaxIndex != -1) break;
- wordMaxIndex = s.IndexOf(" " + wordMax);
- }
- int wordMinLength = array.Select(x => x.Length).Where(x => x > 0).Select(x => x).Min();
- string wordMin = array.Where(x => x.Length == wordMinLength).Select(x => x).First();
- int wordMinIndex = -1;
- while (wordMinIndex == -1)
- {
- wordMinIndex = s.IndexOf(wordMin + " ");
- if (wordMinIndex != -1) break;
- wordMinIndex = s.IndexOf(" " + wordMin + " ");
- if (wordMinIndex != -1) break;
- wordMinIndex = s.IndexOf(" " + wordMin);
- }
- if (wordMinIndex < wordMaxIndex)
- {
- s = s.Insert(wordMaxIndex, wordMin).Remove(wordMaxIndex + wordMinLength, wordMaxLength).
- Insert(wordMinIndex, wordMax).Remove(wordMinIndex + wordMaxLength, wordMinLength);
- }
- else
- {
- s = s.Insert(wordMinIndex, wordMax).Remove(wordMinIndex + wordMaxLength, wordMinLength).
- Insert(wordMaxIndex, wordMin).Remove(wordMaxIndex + wordMinLength, wordMaxLength);
- }
- Console.WriteLine(s);
- Console.Read();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д