מיון מחרוזת באופן אלפביתי בג'אווה

1. סקירה כללית

במדריך זה נראה כיצד למיין חוּט באלף בית.

יכול להיות שיש הרבה סיבות לכך שאנחנו רוצים לעשות את זה - אחת מהן יכולה להיות אימות אם שתי מילים מורכבות מאותן ערכות תווים. בדרך זו נוודא אם הם אנגרמה.

2. מיון מחרוזת

כְּלַפֵּי פְּנִים, חוּט משתמש במערך של תווים לניתוח. לכן, אנו יכולים לעשות שימוש ב- toCharArray (): char [] שיטה, מיין את המערך וצור חדש חוּט בהתבסס על התוצאה:

@Test בטל givenString_whenSort_thenSorted () {String abcd = "bdca"; char [] chars = abcd.toCharArray (); Arrays.sort (תווים); מחרוזת ממוינת = מחרוזת חדשה (תווים); assertThat (מסודר) .isEqualTo ("abcd"); }

ב- Java 8 נוכל למנף את ה- זרם API למיין את חוּט בשבילנו:

@Test בטל givenString_whenSortJava8_thenSorted () {String sorted = "bdca" .chars () .sorted () .collect (StringBuilder :: new, StringBuilder :: appendCodePoint, StringBuilder :: append) .toString (); assertThat (מסודר) .isEqualTo ("abcd"); }

כאן אנו משתמשים באותו אלגוריתם כמו הדוגמה הראשונה, אך אנו ממיינים את מערך ה- char באמצעות ה- זרם ממוין () שיטה.

שימו לב, שדמויות הן ממוינים לפי קודי ה- ASCII שלולכן, אותיות רישיות תמיד יופיעו בהתחלה. לכן, אם נרצה למיין "abC" תוצאת המיון תהיה "מונית".

כדי לפתור את זה, אנחנו צריכים להפוך את המחרוזת עם toLowerCase () שיטה. אנו נעשה זאת בדוגמה המאמתת של Anagram.

3. בדיקות

כדי לבדוק מיון, נבנה את מאמת האנגרמה. כאמור אנגרמה מתרחשת כאשר שתי מילים או משפטים שונים מורכבים מאותה קבוצת תווים.

בואו נסתכל על שלנו AnagramValidator מעמד:

class class AnagramValidator {בוליאני סטטי ציבורי isValid (טקסט מחרוזת, מחרוזת מחרוזת) {text = להכין (טקסט); אנגרמה = הכינו (אנגרמה); מחרוזת sortedText = מיין (טקסט); מחרוזת sortedAnagram = מיין (anagram); החזר sortedText.equals (sortedAnagram); } מין מחרוזת סטטי פרטי (טקסט מחרוזת) {char [] צ'ארס = הכין (טקסט) .toCharArray (); Arrays.sort (תווים); להחזיר מחרוזת חדשה (תווים); } הכנת מחרוזת סטטית פרטית (טקסט מחרוזת) {החזר טקסט.לולקייס () .trim () .replaceAll ("\ s +", ""); }}

כעת נשתמש בשיטת המיון שלנו ונוודא אם האנגרמה תקפה:

@Test בטל givenValidAnagrams_whenSorted_thenEqual () {בוליאני isValidAnagram = AnagramValidator.isValid ("אבידה דולרים", "סלבדור דאלי"); assertTrue (isValidAnagram); }

4. מסקנה

במאמר מהיר זה, הראינו כיצד חוּט ניתן למיין לפי סדר אלפביתי בשתי דרכים. כמו כן, יישמנו את מאמת האנגרמה שהשתמש בשיטת מיון המיתרים.

כרגיל, הקוד השלם זמין בפרויקט GitHub.