pętla, porządek alfabetyczny

0

Mam za zadanie stworzyć program który zwraca true jeśli litery w tekście są umieszczone w porządku alfabetycznym, niestety coś mi nie działa, możecie jakoś pomóc?

 static void Main(string[] args)
        {
            Console.ReadKey();
        }
        static bool CzyUporzadkowany(string napis)
        {
            for (int i = 0; i < napis.Length; i++)
            {
                
                if (napis[i] < 'b' + i)
                {
                    return true;
                }
            }
            return false;
        }  
0

To b jest wielce niepokojące.
Podaj przykładowe party input/output, bo nie do końca rozumiem o co chodzi. Czy CzyUporzadkowany("abc") == true a CzyUporzadkowany("acb") == false) ?

0

@Saalin: tak dokladnie "abcde" == true
"aba" == false
"abcpag" == false
"abcdijkl" == true

1

Po pierwsze - nie możesz mieć w pętli od razu return. Musisz sprawdzić czy każda para następujących po sobie liter jest w określonym porządku (napis[i] <= napis[i + 1]). Jeśli przejdziesz całe słowo i warunek zawsze będzie spełniony to zwracasz true, wpp. zwracasz false.

1
private string alphabet = "abc...";
public bool isAlphabet (string text)
{
  return text == alphabet;
}

public bool isAlphabet2(string text)
{
  for (int index = 0; index < text.length() ; index++)
  {
    if (text[index] != 'a' + index) return false;
  } 
  return true; 
}

Wolę osobiście opcje pierwszą

Edit źle zrozumiałem zadanie, można ten post zignorować

1

Możesz też tak:

  static bool isAlphabeticallySorted(string text) {
    if (text.Length <= 1) {
      return true;
    } 
    int start = text[0];
    for (int i = 1; i < text.Length; ++i) {
      if (text[i] < start) {
        return false;
      }
      start = text[i];
    }
    return true;
  }

Dla Ba zwróci true, jak Chcesz ściśle z alfabetem, to najpierw wszystkie do małych liter.

5

Jak już przerzucamy się rozwiązaniami to

static bool CzyUporzadkowany(string napis) =>  napis.OrderBy(x => x).SequenceEqual(napis);

Asymptotycznie gorzej, ale krócej się pisze.

0

dzięki za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1