ABA


"איך אני בודק מילים כפולות במחרוזות שונות בשפת C?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15315 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15315
pazazta

   22:41   15.05.09   
אל הפורום  
  איך אני בודק מילים כפולות במחרוזות שונות בשפת C?  
 
   יש לי כמה מחרוזות ואני צריך לבדוק איזה מילים מופיעות יותר מפעם אחת במחרוזות האלה.
תודה


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  הדרך הכי פשוטה זה hash tables (טבלאות גיבוב) חפש בגוגל. TTAsnn 16.05.09 11:07 1
     והכי מהיר זה עץ סיומות ldan192  16.05.09 15:50 2
  ברשותכם, מספר תיקונים - Deuce  17.05.09 01:02 3
     חח באתי להגיד את האפשרות הראשונה ronen333  17.05.09 11:46 4
     זו סיבוכיות מטורפת. עץ סיומות מאפשר לך לבצע את זה ב-(O(n (אורך מחרוזת) ldan192  17.05.09 11:56 5
     כמו שאמרתי, hash table נותן בראש.. TTAsnn 17.05.09 15:37 6
  תגובה נוספת לשניכם (מעדיף לרכז). Deuce  17.05.09 17:24 7
     לממש hash table ב c זה שניות... (עשיתי את זה בעבר) TTAsnn 17.05.09 19:43 8
         אתה נכנס לויכוח חסר טעם. Deuce  17.05.09 20:47 9
             לא מבין על מה אתה מדבר TTAsnn 18.05.09 16:18 10
             או לזכות בשתי העולמות ולתכנת ב-++C ldan192  19.05.09 00:32 11
                 חח WTF Deuce  19.05.09 19:41 12
                     קרובי משפחה, לא? :P ldan192  19.05.09 21:08 13

       
TTAsnn

   11:07   16.05.09   
אל הפורום  
  1. הדרך הכי פשוטה זה hash tables (טבלאות גיבוב) חפש בגוגל.  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   15:50   16.05.09   
אל הפורום  
  2. והכי מהיר זה עץ סיומות  
בתגובה להודעה מספר 1
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   01:02   17.05.09   
אל הפורום  
  3. ברשותכם, מספר תיקונים -  
בתגובה להודעה מספר 0
 
הכי פשוט זה פשוט לעבור בלולאה כפולה על כל התתי מחרוזות במחרוזת הנתונה (לולאה מקוננת דיי פשוטה) וליצור מתודה שמקבלת מילה ומחרוזת ומחזירה האמת המחרוזת מופיעה במילה הנתונה. כיצד עושים זאת? גם מתודה דיי פשוטה, מתחילים בלולאה לרוץ על האותיות במילה וברגע שמגיעים למצב שהאות הראשונה שווה לאות הראשונה של מחרוזת החיפוש אז מנסים לבדוק האם יש התאמה על ידי לולאה כאורך המחרוזת שאותה מחפשים.
מצטער, טבלאות גיבוב זה מסובך יותר.

הכי מהיר זה לאו דווקא להשתמש בעצי סיפא, ואין מה לעשות שבאנגלית - suffix trees - זה נשמע טוב יותר. בכל אופן עץ כזה לוקח סיבוכיות מקום מטורפת וגם לוקח הרבה זמן לבנות אותו. במקרה הזה הוא לא הדרך הכי מהירה כנראה. זה משהו דיי חדש כל המבנה נתונים הזה. אם היו מבצעים המון חיפושים אז אולי זה היה נכון.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   11:46   17.05.09   
אל הפורום  
  4. חח באתי להגיד את האפשרות הראשונה  
בתגובה להודעה מספר 3
 
   אבל פחדתי שתאכלו אותי פה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   11:56   17.05.09   
אל הפורום  
  5. זו סיבוכיות מטורפת. עץ סיומות מאפשר לך לבצע את זה ב-(O(n (אורך מחרוזת)  
בתגובה להודעה מספר 3
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TTAsnn

   15:37   17.05.09   
אל הפורום  
  6. כמו שאמרתי, hash table נותן בראש..  
בתגובה להודעה מספר 3
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   17:24   17.05.09   
אל הפורום  
  7. תגובה נוספת לשניכם (מעדיף לרכז).  
בתגובה להודעה מספר 0
 
עידן, זה לא מטורף. עץ סיפות הוא מבנה דיי מגניב, אני אישית גם אהבתי אותו כשלמדתי בקורס מבני נתונים ובכלל הוא נכנס חזק מאוד היום לשוק. אתה חייב לשים לנקודה עדינה - בהינתן עץ סיפות, אפשר לבצא הרבה דברים בסיבוכיות ליניארית. הבעייה בעץ סיפות הוא שהוא תופס הרבה סיבוכיות מקום - על כל מילה אתה בונה עץ עם מספר צמתים בערך כפעמיים אורך המילה המקורית.

טבלת גיבוב - זה רעיון לא רע, גם עץ סיפות זה רעיון לא רע. אבל אתם צריכים לזכור שהוא ביקש את זה ב-C. לכו תממשו עכשיו מבנה נתונים עץ סיפות ב-C. אותו דבר לגבי Hash Table בשפת C.

לתת את הפתרון היעיל ביותר זה לקורס במבני נתונים למתחילים, אולי באלגוריתמיקה למתקדמים יותר אבל אי אפשר לזרוק אותו סתם לכל שפה. לפעמים הפתרון היעיל דורש המון עבודה, בטח שב-C אני לא אתחיל לבנות עץ סיפות.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TTAsnn

   19:43   17.05.09   
אל הפורום  
  8. לממש hash table ב c זה שניות... (עשיתי את זה בעבר)  
בתגובה להודעה מספר 7
 
   חוץ מזה, שקיימים עצים מוכנים, יש מלא ספריות\דוגמאות קוד ברשת, לא צריך לעבוד מ 0...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   20:47   17.05.09   
אל הפורום  
  9. אתה נכנס לויכוח חסר טעם.  
בתגובה להודעה מספר 8
 
גם לינוקס מבוססת C.
אם תרצה תיכנות עם מבני נתונים גדולים, לך ל-JAVA או ל-C#; אם אתה ממש צמא למהירות, אז תתעקש על C.

גם אני מימשתי הרבה מבני נתונים, אפילו בניתי פעם עץ אדום שחור ב-C. ואני באמת פריק של יעילות, אבל אני לא מדבר על הפאן הזה בתגובה.







                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TTAsnn

   16:18   18.05.09   
אל הפורום  
  10. לא מבין על מה אתה מדבר  
בתגובה להודעה מספר 9
 
   דבר ראשון מה קשור שלינוקס מבוססת C?
גם אני בניתי בעבר עץ אדום שחור ב C, זה היה קצת סיוט (יחסית לטבלאת גיבוב לפחות) אבל גם לא נורא, וגם לזה יכולתי לקחת דברים מוכנים.

אני לא מבין מה רע במה שאמרתי? בסה"כ אמרתי שקל להשתמש בטבלאת גיבוב, וקל למצוא קוד לדוגמא, זה ממש פשוט בלי קשר ליעילות, גם מבחינת "זמן עבודה"


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   00:32   19.05.09   
אל הפורום  
  11. או לזכות בשתי העולמות ולתכנת ב-++C  
בתגובה להודעה מספר 9
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   19:41   19.05.09   
אל הפורום  
  12. חח WTF  
בתגובה להודעה מספר 11
 
איך משאלה תמימה ב-C הגענו למצב של המלצה לעבור ל-C++






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   21:08   19.05.09   
אל הפורום  
  13. קרובי משפחה, לא? :P  
בתגובה להודעה מספר 12
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net