Поменять местами самое длинное и самое короткое слова в строке - 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();
        }
    }
}

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


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

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

12   голосов , оценка 3.75 из 5
Похожие ответы