PDA

View Full Version : ارائه يك روش كم هزينه از نظر زماني براي مساله حذف دو كلمه پشت سر هم



mahdikoochooloo
دوشنبه 17 تیر 1392, 01:56 صبح
به نام خدا
با سلام
فرض كنيد يك مجموعه كلمه داريم :
ali,ali,hasan,ali,karim,ali,karim,karim
مي خوايم كاري كنيم كه خروجي با حذف دو كلمه اي كه به صورت پشت سر هم تكرار بشه، به صورت زير ديده بشه :‌
ali,hasan,ali,karim,ali,karim


البته با گذاشتن دو تا فور مي شه انجامش داد
اول بريزيم تو آرايه
بعد يك حلقه بزاريم تكراري ها رو حذف كنه
بعد حلقه بزاريم شيفت بده خالي ها ديده نشه


اما اين راه طولانيه و زمانبر. مخصوصا اگر ديتا زياد باشه
دوستان راه ديگه اي دارن؟

با تشكر

samadblaj
دوشنبه 17 تیر 1392, 02:33 صبح
میتونی جای لیست جدول رو قرار بدی...
List<string> str = new List<string>() { "ali", "ali", "hasan", "ali" };
var q = str.Distinct();
foreach (var item in q)
MessageBox.Show(item.ToString());

مهرداد صفا
دوشنبه 17 تیر 1392, 09:29 صبح
باسلام.
در این روش علاوه بر لیست کلمات به یک لیست برای نگهداری نتایج نیاز است که در حلقه آیتم موجود در لیست کلمات با آخرین آیتم اضافه شده به لیست نتایج مقایسه شده و در صورت تفاوت آیتم به نتایج اضافه می شود:



string[] words=new string[] { "ali", "ali", "hasan", "ali", "karim", "ali", "karim", "karim" };
List<string> result = new List<string>();
foreach (string item in words)
{
if (item != result.LastOrDefault())
{
result.Add(item);
Console.WriteLine(item);
}
}
نتیجه:


ali
hasan
ali
karim
ali
karim