Поменять местами самое длинное и самое короткое слова в строке - C#

Узнай цену своей работы

Формулировка задачи:

Помогите:Строка состоит из слов, разделенных одним или несколькими пробелами. Поменяйте местами наибольшее по длине слово и наименьшее.

Решение задачи: «Поменять местами самое длинное и самое короткое слова в строке»

textual
Листинг программы
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace LinqStringSwap
  5. {
  6.     class Program
  7.     {
  8.         static void Main()
  9.         {
  10.             string s = "a  a a   a";
  11.             var array = s.Split(' ');
  12.  
  13.             int wordMaxLength = array.Select(x => x.Length).Where(x => x > 0).Select(x => x).Max();
  14.             string wordMax = array.Where(x => x.Length == wordMaxLength).Select(x => x).First();
  15.             int wordMaxIndex = -1;
  16.             while (wordMaxIndex == -1)
  17.             {
  18.                 wordMaxIndex = s.IndexOf(wordMax + " ");
  19.                 if (wordMaxIndex != -1) break;
  20.                 wordMaxIndex = s.IndexOf(" " + wordMax + " ");
  21.                 if (wordMaxIndex != -1) break;
  22.                 wordMaxIndex = s.IndexOf(" " + wordMax);
  23.             }
  24.  
  25.             int wordMinLength = array.Select(x => x.Length).Where(x => x > 0).Select(x => x).Min();
  26.             string wordMin = array.Where(x => x.Length == wordMinLength).Select(x => x).First();
  27.             int wordMinIndex = -1;
  28.             while (wordMinIndex == -1)
  29.             {
  30.                 wordMinIndex = s.IndexOf(wordMin + " ");
  31.                 if (wordMinIndex != -1) break;
  32.                 wordMinIndex = s.IndexOf(" " + wordMin + " ");
  33.                 if (wordMinIndex != -1) break;
  34.                 wordMinIndex = s.IndexOf(" " + wordMin);
  35.             }
  36.  
  37.             if (wordMinIndex < wordMaxIndex)
  38.             {
  39.                 s = s.Insert(wordMaxIndex, wordMin).Remove(wordMaxIndex + wordMinLength, wordMaxLength).
  40.                     Insert(wordMinIndex, wordMax).Remove(wordMinIndex + wordMaxLength, wordMinLength);
  41.             }
  42.             else
  43.             {
  44.                 s = s.Insert(wordMinIndex, wordMax).Remove(wordMinIndex + wordMaxLength, wordMinLength).
  45.                     Insert(wordMaxIndex, wordMin).Remove(wordMaxIndex + wordMinLength, wordMaxLength);
  46.             }
  47.  
  48.             Console.WriteLine(s);
  49.             Console.Read();
  50.         }
  51.     }
  52. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы