Bu makalede, csharp’daki( c# ) bir dizeden tüm olası alt dizeleri nasıl çıkaracağımızı öğreneceğiz.
Bu sık sorulan bir mülakat sorusudur.
Bir dizedeki tüm alt dizeleri bulmak için aşağıdaki örneğe göz atalım.
C# ‘da Bir Dizedeki Tüm Alt Dizeleri Bulmak İçin Program
class Program
{
static void Main()
{
string value = "rstuvwxyz";
//Değerimizi alalim.
for (int length = 1; length < value.Length; length++)
{
// bitiş indexi biraz zor.
for (int start = 0; start <= value.Length - length; start++)
{
string substring = value.Substring(start, length);
Console.WriteLine(substring);
}
}
}
}
Çıktısı
C# 1-20 kadar olan sayıların alt küme toplamı 25 olanı bulan algoritma
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
#region klavyedenKüme
var _kume = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20";
var kume = _kume.Split(',');
var altkume = AltKumeBul(kume);
var sayi = AltkToplam(altkume);
Console.WriteLine("Küme toplamı 25 olan altküme sayısı: " + sayi);
Console.ReadKey();
}
private static int AltkToplam(List<string> altkume)
{
string[,] altk = new string[4, altkume.Count];
int adet = 0;
foreach (var v in altkume)
{
if (v != "")
{
int toplam = 0;
var temp = v.Split(',');
var l = temp.Length;
toplam += temp.Sum(s => Convert.ToInt32(s));
if (toplam == 25)
{
adet++;
}
}
}
return adet;
}
private static List<string> AltKumeBul(string[] kume)
{
int es = kume.Length;
int aks = AksHesap(es);
List<string> t = new List<string>();
string[,] altkume = new string[es, aks];
t.Add("");
foreach (var s in kume)
{
int x = t.Count();
for (int y = 0; y < x; y++)
{
if (y == 0)
{
// Console.WriteLine("{" + t[y] + s + "}");
t.Add(t[y] + s);
}
else
{
// Console.WriteLine("{" + t[y] + "," + s + "}");
t.Add(t[y] + "," + s);
}
}
}
return t;
}
private static int AksHesap(int es)
{
return (int)Math.Pow(2, es);
}
}
}
#endregion
Youtube İle Çıktısı
C# ‘da Bir Dizedeki Tüm Alt Dizeleri Bulmak İçin Programımızın kodlarını ve ekran çıktısını paylaştık bunun yanı sıra alt küme mantığınada bakmak için ikinci bir program paylaştık umarım faydalı olur.Faydalanan arkadaşların yorum bırakması diğer arkadaşlarada ulaşması açısından çok iyi olacaktır.
"C# ‘da Bir Dizedeki Tüm Alt Dizeleri Bulmak İçin Program Kod" başlığının altındaki kodlar yanlış . Misal verecek olursak. Daha kolay anlaşılması açısından.
YanıtlaSilstring value = "rstuvwxyz"; kodu yerine
string value = "12345"; kodlarını yazalım.
programın bize vereceği alt diziler:
1
2
3
4
5
12
23
34
45
123
234
345
1234
2345
şeklinde oluyor. 135 nerede? 145 nerede?