Поменять местами самое длинное и самое короткое слова в строке - 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д