Melintasi abjad dari a hingga z menggunakan C#
P粉982881583
2023-08-23 09:51:55
<p>Saya ada soalan tentang melintasi abjad.
Saya mahu gelung yang bermula pada "a" dan berakhir pada "z". Kemudian, gelung bermula dari "aa" dan dikira sehingga "az". Kemudian mulakan dari "ba", pergi ke "bz", dan seterusnya...</p>
<p>Adakah sesiapa tahu penyelesaian? </p>
<h2>Terima kasih</h2>
<p>Edit: Saya terlupa, saya memberikan aksara "a" kepada fungsi dan kemudian fungsi itu mesti mengembalikan "b". Jika "bnc" diberikan, fungsi mesti mengembalikan "bnd". </p>
Percubaan pertama, cuma guna a-z kemudian aa-zz
Perhatikan bahawa ini akan berhenti di 'zz'. Sudah tentu, terdapat beberapa pengulangan hodoh dalam gelung. Nasib baik, ini mudah untuk diperbaiki - dan ia boleh menjadi lebih fleksibel:
Cubaan kedua: abjad yang lebih fleksibel
Kini, jika anda hanya ingin menjana a, b, c, d, aa, ab, ac, ad, ba, dan lain-lain, anda boleh menghubungi
GetExcelColumns("abcd")
.Percubaan Ketiga (Disemak Lanjut) - Urutan Tak Terhingga
Mungkin menggunakan rekursi akan menghasilkan kod yang lebih bersih, tetapi ia tidak secekap itu.
Sila ambil perhatian bahawa jika anda ingin berhenti pada titik tertentu anda boleh menggunakan LINQ:
"mulakan semula" lelaran
Untuk memulakan semula iterator dari titik tertentu, anda boleh menggunakan
SkipWhile
seperti yang dicadangkan oleh perisian tersebut. Sudah tentu, ini agak tidak cekap. Jika anda boleh mengekalkan sebarang keadaan di antara panggilan, anda boleh mengekalkan lelaran (untuk mana-mana penyelesaian):Sebagai alternatif, anda mungkin boleh menstruktur kod anda untuk digunakan
foreach
, pecah apabila nilai pertama ditemui yang sebenarnya boleh digunakan.EDIT: Jadikan ia betul-betul mengikut suntingan terkini siaran asal
Ini adalah penyelesaian paling mudah dan diuji: