{"id":28271,"date":"2025-08-26T09:30:26","date_gmt":"2025-08-26T06:30:26","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/"},"modified":"2025-08-26T09:30:26","modified_gmt":"2025-08-26T06:30:26","slug":"java-ile-onek-ve-son-ek-problemlerini-cozme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/","title":{"rendered":"Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme"},"content":{"rendered":"<p>Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme<\/p>\n<p>Veri yap\u0131lar\u0131 ve algoritmalar (DSA) alan\u0131nda, \u00f6nek ve son ek problemleri, metin i\u015fleme, biyoinformatik ve veri madencili\u011fi gibi \u00e7e\u015fitli alanlarda yayg\u0131n olarak kar\u015f\u0131m\u0131za \u00e7\u0131kar.  Bu problemler, bir dizenin ba\u015f\u0131nda veya sonunda yer alan belirli alt dizileri (\u00f6nekler ve son ekler) bulmay\u0131 veya i\u015flemeyi gerektirir. Bu makale, Java dilini kullanarak, farkl\u0131 karma\u015f\u0131kl\u0131k seviyelerinde \u00f6nek ve son ek problemlerini ele almay\u0131, \u00e7\u00f6z\u00fcm stratejilerini detayl\u0131 bir \u015fekilde a\u00e7\u0131klamay\u0131 ve ger\u00e7ek d\u00fcnya \u00f6rnekleri ile peki\u015ftirmeyi ama\u00e7lamaktad\u0131r.  Java kod \u00f6rnekleri ile ad\u0131m ad\u0131m ilerleyerek, bu konuda uzmanl\u0131k seviyesine ula\u015fman\u0131za yard\u0131mc\u0131 olaca\u011f\u0131z.  Daha fazla bilgi i\u00e7in <a href=\"https:\/\/fatihsoysal.com\">fatihsoysal.com<\/a> sitesini ziyaret edebilirsiniz.<\/p>\n<h2>\u00d6nek ve Son Ek Problemlerine Giri\u015f: Temel Kavramlar<\/h2>\n<p>\u00d6ncelikle, temel kavramlar\u0131 a\u00e7\u0131kl\u0131\u011fa kavu\u015ftural\u0131m.  Bir <i>\u00f6nek<\/i>, bir dizenin ba\u015f\u0131ndan ba\u015flay\u0131p herhangi bir noktada biten bir alt dizidir.  \u00d6rne\u011fin, &#8220;Merhaba&#8221; dizisinin &#8220;Mer&#8221;, &#8220;Merh&#8221;, &#8220;Merha&#8221; ve &#8220;Merhaba&#8221; gibi \u00f6nekleri vard\u0131r. Benzer \u015fekilde, bir <i>son ek<\/i>, bir dizenin sonundan ba\u015flay\u0131p herhangi bir noktada biten bir alt dizidir.  &#8220;Merhaba&#8221; dizisinin &#8220;ba&#8221;, &#8220;aba&#8221;, &#8220;rhaba&#8221; ve &#8220;Merhaba&#8221; gibi son ekleri vard\u0131r.  Bu temel tan\u0131mlardan hareketle, \u00e7e\u015fitli problemler ortaya \u00e7\u0131kar.  \u00d6rne\u011fin, en uzun ortak \u00f6nek (Longest Common Prefix &#8211; LCP) bulma, birden fazla dizinin ortak olan en uzun ba\u015flang\u0131\u00e7 dizisini belirlemeyi ama\u00e7lar.  Benzer \u015fekilde, en uzun ortak son ek (Longest Common Suffix &#8211; LCS) problemi, birden fazla dizinin ortak olan en uzun biti\u015f dizisini bulmay\u0131 hedefler.<\/p>\n<p>Ayr\u0131ca, \u00f6nek ve son ek problemleri,  <i>KMP algoritmas\u0131<\/i> (Knuth-Morris-Pratt) gibi geli\u015fmi\u015f algoritmalar\u0131n temelini olu\u015fturur. KMP algoritmas\u0131, bir metin i\u00e7inde bir desenin t\u00fcm e\u015fle\u015fmelerini verimli bir \u015fekilde bulmak i\u00e7in kullan\u0131l\u0131r. Bu algoritma, desendeki tekrar eden alt dizileri tespit ederek, arama i\u015flemini h\u0131zland\u0131r\u0131r.  Bu nedenle, \u00f6nek ve son ek kavramlar\u0131na hakim olmak, metin i\u015fleme ve di\u011fer algoritmalar\u0131n daha iyi anla\u015f\u0131lmas\u0131 i\u00e7in \u00e7ok \u00f6nemlidir.<\/p>\n<p>Ba\u015fka bir \u00f6nemli kavram ise <i>\u00f6nek dizisi<\/i>dir.  Bir dizinin \u00f6nek dizisi, o dizinin t\u00fcm \u00f6neklerinin uzunluklar\u0131n\u0131 i\u00e7eren bir dizidir.  \u00d6rne\u011fin, &#8220;ABCD&#8221; dizisinin \u00f6nek dizisi [1, 2, 3, 4]&#8217;t\u00fcr. \u00d6nek dizileri, KMP algoritmas\u0131nda ve di\u011fer metin i\u015fleme algoritmalar\u0131nda kritik bir rol oynar.  Bu diziler, desendeki tekrar eden yap\u0131lar\u0131 verimli bir \u015fekilde kullanarak arama i\u015flemlerini optimize eder.<\/p>\n<h2>Java ile En Uzun Ortak \u00d6ne\u011fi (LCP) Nas\u0131l Bulurum?<\/h2>\n<p>\u0130ki veya daha fazla dize i\u00e7in en uzun ortak \u00f6nek (LCP), t\u00fcm dizelerin ortak olarak payla\u015ft\u0131\u011f\u0131 en uzun ba\u015flang\u0131\u00e7 alt dizisidir.  Bu problemi \u00e7\u00f6zmek i\u00e7in birka\u00e7 farkl\u0131 y\u00f6ntem kullan\u0131labilir.  Basit bir yakla\u015f\u0131m, dizileri karakter karakter kar\u015f\u0131la\u015ft\u0131rmak ve e\u015fle\u015fme sona erene kadar devam etmektir.  Ancak, bu y\u00f6ntem, \u00e7ok say\u0131da dize i\u00e7in olduk\u00e7a verimsiz olabilir.<\/p>\n<p>Daha verimli bir y\u00f6ntem ise, dizileri bir a\u011fa\u00e7 yap\u0131s\u0131nda (\u00f6rne\u011fin, trie) depolamak ve a\u011fa\u00e7ta en derin ortak d\u00fc\u011f\u00fcm\u00fc bulmakt\u0131r.  Bu y\u00f6ntem, \u00f6zellikle b\u00fcy\u00fck say\u0131da dize i\u00e7in daha h\u0131zl\u0131 sonu\u00e7lar sa\u011flar.  A\u015fa\u011f\u0131da, Java dilinde basit bir LCP bulma algoritmas\u0131n\u0131n \u00f6rne\u011fini g\u00f6rebilirsiniz:<\/p>\n<pre><code class=\"language-java\">public static String longestCommonPrefix(String[] strs) {\n    if (strs == null || strs.length == 0) return \"\";\n    String prefix = strs[0];\n    for (int i = 1; i < strs.length; i++) {\n        while (strs[i].indexOf(prefix) != 0) {\n            prefix = prefix.substring(0, prefix.length() - 1);\n            if (prefix.isEmpty()) return \"\";\n        }\n    }\n    return prefix;\n}<\/pre>\n<p><\/code><\/p>\n<p>Bu fonksiyon, bir dize dizisini al\u0131r ve en uzun ortak \u00f6neklerini d\u00f6nd\u00fcr\u00fcr.  Bo\u015f bir dize dizisi veya null de\u011feri i\u00e7in bo\u015f bir dize d\u00f6nd\u00fcr\u00fcr.  Fonksiyon, \u00f6ncelikle ilk dizeyi \u00f6nek olarak al\u0131r ve di\u011fer dizelerle kar\u015f\u0131la\u015ft\u0131r\u0131r.  E\u011fer bir e\u015fle\u015fme bulunamazsa, \u00f6nek bir karakter k\u0131salt\u0131l\u0131r ve kar\u015f\u0131la\u015ft\u0131rma tekrarlan\u0131r.  E\u011fer \u00f6nek bo\u015fsa, ortak bir \u00f6nek olmad\u0131\u011f\u0131 anlam\u0131na gelir ve bo\u015f bir dize d\u00f6nd\u00fcr\u00fcl\u00fcr.<\/p>\n<h2>En Uzun Ortak Son Eki (LCS) Nas\u0131l Bulabilirim?<\/h2>\n<p>En uzun ortak son ek (LCS) problemi, en uzun ortak \u00f6nek problemine benzer \u015fekilde, birden fazla dizinin ortak olan en uzun biti\u015f alt dizisini bulmay\u0131 hedefler.  Bu problemi \u00e7\u00f6zmek i\u00e7in de benzer yakla\u015f\u0131mlar kullan\u0131labilir.  \u00d6rne\u011fin, karakter karakter kar\u015f\u0131la\u015ft\u0131rma y\u00f6ntemi veya trie veri yap\u0131s\u0131 kullan\u0131labilir.<\/p>\n<p>A\u015fa\u011f\u0131da, Java dilinde bir LCS bulma algoritmas\u0131n\u0131n \u00f6rne\u011fini g\u00f6rebilirsiniz.  Bu \u00f6rnek, iki dize i\u00e7in en uzun ortak son eki bulmay\u0131 g\u00f6stermektedir:<\/p>\n<pre><code class=\"language-java\">public static String longestCommonSuffix(String str1, String str2) {\n    int n = str1.length();\n    int m = str2.length();\n    int i = n - 1;\n    int j = m - 1;\n    String suffix = \"\";\n    while (i >= 0 && j >= 0 && str1.charAt(i) == str2.charAt(j)) {\n        suffix = str1.charAt(i) + suffix;\n        i--;\n        j--;\n    }\n    return suffix;\n}<\/pre>\n<p><\/code><\/p>\n<p>Bu fonksiyon, iki dize al\u0131r ve en uzun ortak son eklerini d\u00f6nd\u00fcr\u00fcr.  Fonksiyon, dizilerin son karakterlerinden ba\u015flayarak kar\u015f\u0131la\u015ft\u0131rma yapar ve e\u015fle\u015fen karakterleri suffix de\u011fi\u015fkenine ekler.  E\u015fle\u015fme sona erdi\u011finde, suffix de\u011fi\u015fkeni, en uzun ortak son eki i\u00e7erir.<\/p>\n<h2>\u00d6nek ve Son Ek Problemlerinde Geli\u015fmi\u015f Teknikler<\/h2>\n<p>Daha karma\u015f\u0131k \u00f6nek ve son ek problemlerini \u00e7\u00f6zmek i\u00e7in, geli\u015fmi\u015f teknikler ve algoritmalar gerekli olabilir.  \u00d6rne\u011fin,  Suffix Array, Suffix Tree gibi veri yap\u0131lar\u0131, b\u00fcy\u00fck metinlerde verimli bir \u015fekilde \u00f6nek ve son ek arama i\u015flemlerini ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131labilir.  Suffix Array, bir dizinin t\u00fcm son eklerinin alfabetik s\u0131ras\u0131na g\u00f6re s\u0131ralanm\u0131\u015f bir dizisidir.  Suffix Tree ise, bir dizinin t\u00fcm son eklerini i\u00e7eren bir a\u011fa\u00e7 yap\u0131s\u0131d\u0131r.  Bu veri yap\u0131lar\u0131, desen e\u015fle\u015ftirme, tekrar eden alt dizilerin bulunmas\u0131 gibi i\u015flemler i\u00e7in olduk\u00e7a verimlidir.  Bunlar\u0131n kullan\u0131m\u0131, daha karma\u015f\u0131k algoritmalar\u0131n uygulanmas\u0131n\u0131 gerektirir ve performans a\u00e7\u0131s\u0131ndan \u00f6nemli kazan\u0131mlar sa\u011flayabilir.<\/p>\n<p>Ayr\u0131ca, dinamik programlama gibi teknikler, baz\u0131 \u00f6nek ve son ek problemlerini daha verimli bir \u015fekilde \u00e7\u00f6zmek i\u00e7in kullan\u0131labilir. Dinamik programlama, alt problemlerin sonu\u00e7lar\u0131n\u0131 saklayarak ve tekrarlanan hesaplamalardan ka\u00e7\u0131narak, b\u00fcy\u00fck problemleri daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir par\u00e7alara ay\u0131r\u0131r.  \u00d6rne\u011fin, en uzun ortak alt dizi (LCS) problemi, dinamik programlama kullan\u0131larak verimli bir \u015fekilde \u00e7\u00f6z\u00fclebilir.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131: Vaka \u00c7al\u0131\u015fmalar\u0131<\/h2>\n<p>\u00d6nek ve son ek problemleri, bir\u00e7ok ger\u00e7ek d\u00fcnya uygulamas\u0131nda kullan\u0131l\u0131r.  \u00d6rne\u011fin, <b>DNA dizileme<\/b> alan\u0131nda, iki DNA dizisi aras\u0131ndaki benzerlikleri belirlemek i\u00e7in en uzun ortak alt dizi (LCS) algoritmalar\u0131 kullan\u0131l\u0131r.  <b>Veri madencili\u011fi<\/b>nde, b\u00fcy\u00fck veri setlerinde benzer kal\u0131plar\u0131 bulmak i\u00e7in \u00f6nek ve son ek analizi kullan\u0131labilir.  <b>Metin d\u00fczenleyiciler<\/b>de, otomatik tamamlama ve  \"bul ve de\u011fi\u015ftir\" gibi fonksiyonlar, \u00f6nek ve son ek aramalar\u0131na dayan\u0131r.  Ayr\u0131ca, <b>a\u011f g\u00fcvenli\u011fi<\/b> alan\u0131nda, k\u00f6t\u00fc ama\u00e7l\u0131 yaz\u0131l\u0131mlar\u0131n tespiti i\u00e7in metin analizi ve desen e\u015fle\u015ftirme teknikleri kullan\u0131l\u0131r.<\/p>\n<p>Bir di\u011fer \u00f6rnek olarak, <b>versiyon kontrol sistemleri<\/b>ni ele alal\u0131m.  Git gibi sistemlerde, dosya de\u011fi\u015fikliklerini izlemek ve farkl\u0131 versiyonlar aras\u0131nda farklar\u0131 tespit etmek i\u00e7in \u00f6nek ve son ek kar\u015f\u0131la\u015ft\u0131rmalar\u0131 kullan\u0131l\u0131r.  Bu kar\u015f\u0131la\u015ft\u0131rmalar, g\u00fcncellemeleri verimli bir \u015fekilde y\u00f6netmek ve dosya de\u011fi\u015fikliklerini en aza indirgemek i\u00e7in \u00f6nemlidir.<\/p>\n<h2>\u00d6\u011frenme Yol Haritas\u0131: Yeni Ba\u015flayan \u2192 Orta \u2192 \u0130leri D\u00fczey<\/h2>\n<p>Bu konuda uzmanla\u015fmak i\u00e7in kademeli bir \u00f6\u011frenme yol haritas\u0131 \u015f\u00f6yle olabilir:<\/p>\n<h3>Yeni Ba\u015flayanlar \u0130\u00e7in:<\/h3>\n<ul>\n<li>Temel dize manip\u00fclasyon fonksiyonlar\u0131n\u0131 \u00f6\u011frenin (substring, indexOf, charAt vb.)<\/li>\n<li>En uzun ortak \u00f6nek (LCP) ve en uzun ortak son ek (LCS) problemlerini basit algoritmalar kullanarak \u00e7\u00f6z\u00fcn.<\/li>\n<li>KMP algoritmas\u0131n\u0131n temel mant\u0131\u011f\u0131n\u0131 anlamaya \u00e7al\u0131\u015f\u0131n.<\/li>\n<li>Basit Java kod \u00f6rnekleri \u00fczerinde \u00e7al\u0131\u015f\u0131n ve pratik yap\u0131n.<\/li>\n<\/ul>\n<h3>Orta Seviye \u0130\u00e7in:<\/h3>\n<ul>\n<li>Trie veri yap\u0131s\u0131n\u0131 \u00f6\u011frenin ve LCP ve LCS problemlerini trie kullanarak \u00e7\u00f6z\u00fcn.<\/li>\n<li>KMP algoritmas\u0131n\u0131 uygulamal\u0131 olarak kodlay\u0131n ve performans\u0131n\u0131 analiz edin.<\/li>\n<li>\u00d6nek dizisi kavram\u0131n\u0131 ve uygulamalar\u0131n\u0131 \u00f6\u011frenin.<\/li>\n<li>Farkl\u0131 algoritmalar\u0131n performans kar\u015f\u0131la\u015ft\u0131rmalar\u0131n\u0131 yap\u0131n.<\/li>\n<\/ul>\n<h3>\u0130leri Seviye \u0130\u00e7in:<\/h3>\n<ul>\n<li>Suffix Array ve Suffix Tree veri yap\u0131lar\u0131 hakk\u0131nda detayl\u0131 bilgi edinin ve bunlar\u0131 uygulay\u0131n.<\/li>\n<li>Karma\u015f\u0131k \u00f6nek ve son ek problemlerini dinamik programlama teknikleri kullanarak \u00e7\u00f6z\u00fcn.<\/li>\n<li>Ger\u00e7ek d\u00fcnya uygulamalar\u0131nda \u00f6nek ve son ek problemlerini analiz edin ve \u00e7\u00f6z\u00fcmler geli\u015ftirin.<\/li>\n<li>Daha fazla bilgi i\u00e7in <a href=\"https:\/\/fatihsoysal.com\">fatihsoysal.com<\/a> sitesini ziyaret edebilirsiniz.<\/li>\n<\/ul>\n<h2>Performans Kar\u015f\u0131la\u015ft\u0131rmas\u0131: Tablo vs. Liste vs. \u00d6zel \u00c7\u00f6z\u00fcm<\/h2>\n<p>| Y\u00f6ntem       | Zaman Karma\u015f\u0131kl\u0131\u011f\u0131 | Uzay Karma\u015f\u0131kl\u0131\u011f\u0131 | Uygunluk                     |<br \/>\n|--------------|--------------------|--------------------|-----------------------------|<br \/>\n| Karakter Kar\u015f\u0131la\u015ft\u0131rma | O(n*m)             | O(1)              | K\u00fc\u00e7\u00fck diziler i\u00e7in uygun      |<br \/>\n| Trie          | O(m*log(n))          | O(n)              | B\u00fcy\u00fck diziler i\u00e7in daha verimli |<br \/>\n| Suffix Array | O(n log n)          | O(n)              | \u00c7ok b\u00fcy\u00fck diziler i\u00e7in ideal |<br \/>\n| \u00d6zel \u00c7\u00f6z\u00fcm   | De\u011fi\u015fken           | De\u011fi\u015fken           | Problem \u00f6zelli\u011fine ba\u011fl\u0131     |<\/p>\n<p>* n: Dizinin uzunlu\u011fu, m: Kar\u015f\u0131la\u015ft\u0131r\u0131lan dizilerin say\u0131s\u0131<\/p>\n<h2>Dikkat: G\u00fcvenlik Uyar\u0131lar\u0131<\/h2>\n<div style=\"border: 1px solid red; padding: 10px; background-color: #ffdddd;\">\n    <strong>Dikkat:<\/strong>  Kullan\u0131c\u0131 taraf\u0131ndan sa\u011flanan verilerin do\u011frulama yap\u0131lmadan do\u011frudan kod i\u00e7inde kullan\u0131lmas\u0131 g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7abilir.  Her zaman kullan\u0131c\u0131 girdilerini do\u011frulay\u0131n ve k\u00f6t\u00fc ama\u00e7l\u0131 kod giri\u015flerine kar\u015f\u0131 \u00f6nlemler al\u0131n.\n<\/div>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<ul>\n<li><b>Soru:<\/b> \u00d6nek ve son ek problemleri hangi veri yap\u0131lar\u0131yla daha verimli \u00e7\u00f6z\u00fclebilir? <br \/> <b>Cevap:<\/b> Trie, Suffix Array ve Suffix Tree gibi veri yap\u0131lar\u0131, b\u00fcy\u00fck metinlerde \u00f6nek ve son ek arama i\u015flemlerini verimli bir \u015fekilde ger\u00e7ekle\u015ftirmek i\u00e7in idealdir.<\/li>\n<li><b>Soru:<\/b> KMP algoritmas\u0131 nas\u0131l \u00e7al\u0131\u015f\u0131r? <br \/> <b>Cevap:<\/b> KMP algoritmas\u0131, desendeki tekrar eden alt dizileri kullanarak, arama i\u015flemini h\u0131zland\u0131r\u0131r.  \u00d6nek dizisi ad\u0131 verilen bir dizi olu\u015fturarak, e\u015fle\u015fmeyen karakterler durumunda geriye do\u011fru arama yapmadan direkt olarak ilerleyebilir.<\/li>\n<li><b>Soru:<\/b> Dinamik programlama, \u00f6nek ve son ek problemlerinde nas\u0131l kullan\u0131l\u0131r? <br \/> <b>Cevap:<\/b> Dinamik programlama, alt problemlerin sonu\u00e7lar\u0131n\u0131 saklayarak ve tekrarlanan hesaplamalardan ka\u00e7\u0131narak, b\u00fcy\u00fck problemleri daha k\u00fc\u00e7\u00fck par\u00e7alara ay\u0131r\u0131r ve verimli bir \u00e7\u00f6z\u00fcm sa\u011flar.  \u00d6rne\u011fin, LCS problemi dinamik programlama ile verimli bir \u015fekilde \u00e7\u00f6z\u00fclebilir.<\/li>\n<li><b>Soru:<\/b> Bu problemlerin ger\u00e7ek d\u00fcnya uygulamalar\u0131 nelerdir? <br \/> <b>Cevap:<\/b> DNA dizileme, veri madencili\u011fi, metin d\u00fczenleyiciler, a\u011f g\u00fcvenli\u011fi ve versiyon kontrol sistemleri gibi bir\u00e7ok alanda kullan\u0131l\u0131rlar.<\/li>\n<li><b>Soru:<\/b> Java d\u0131\u015f\u0131nda hangi dillerde bu problemleri \u00e7\u00f6zebilirim? <br \/><b>Cevap:<\/b> Python, C++, C#, JavaScript gibi bir\u00e7ok programlama dilinde \u00f6nek ve son ek problemleri \u00e7\u00f6z\u00fclebilir.  Her dilin kendine \u00f6zg\u00fc k\u00fct\u00fcphaneleri ve fonksiyonlar\u0131 bulunmaktad\u0131r. <\/li>\n<\/ul>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme Veri yap\u0131lar\u0131 ve algoritmalar (DSA) alan\u0131nda, \u00f6nek ve son ek&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-28271","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme<\/title>\n<meta name=\"description\" content=\"Veri yap\u0131lar\u0131 ve algoritmalar (DSA) alan\u0131nda, \u00f6nek ve son ek problemleri, metin i\u015fleme, biyoinformatik ve veri madencili\u011fi gibi \u00e7e\u015fitli alanlarda yayg\u0131n olarak kar\u015f\u0131m\u0131za \u00e7\u0131kar. Bu problemler, bir dizenin ba\u015f\u0131nda veya sonunda yer alan belirli alt dizileri (\u00f6nekler ve son ekler) bulmay\u0131 veya i\u015flemeyi gerektirir. Bu makale, Java dilini kullanarak, farkl\u0131 karma\u015f\u0131kl\u0131k seviyelerinde \u00f6nek ve son ek problemlerini ele almay\u0131, \u00e7\u00f6z\u00fcm stratejilerini detayl\u0131 bir \u015fekilde a\u00e7\u0131klamay\u0131 ve ger\u00e7ek d\u00fcnya \u00f6rnekleri ile peki\u015ftirmeyi ama\u00e7lamaktad\u0131r. Java kod \u00f6rnekleri ile ad\u0131m ad\u0131m ilerleyerek, bu konuda uzmanl\u0131k seviyesine ula\u015fman\u0131za yard\u0131mc\u0131 olaca\u011f\u0131z. Daha fazla bilgi i\u00e7in fatihsoysal.com sitesini ziyaret edebilirsiniz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme\" \/>\n<meta property=\"og:description\" content=\"Veri yap\u0131lar\u0131 ve algoritmalar (DSA) alan\u0131nda, \u00f6nek ve son ek problemleri, metin i\u015fleme, biyoinformatik ve veri madencili\u011fi gibi \u00e7e\u015fitli alanlarda yayg\u0131n olarak kar\u015f\u0131m\u0131za \u00e7\u0131kar. Bu problemler, bir dizenin ba\u015f\u0131nda veya sonunda yer alan belirli alt dizileri (\u00f6nekler ve son ekler) bulmay\u0131 veya i\u015flemeyi gerektirir. Bu makale, Java dilini kullanarak, farkl\u0131 karma\u015f\u0131kl\u0131k seviyelerinde \u00f6nek ve son ek problemlerini ele almay\u0131, \u00e7\u00f6z\u00fcm stratejilerini detayl\u0131 bir \u015fekilde a\u00e7\u0131klamay\u0131 ve ger\u00e7ek d\u00fcnya \u00f6rnekleri ile peki\u015ftirmeyi ama\u00e7lamaktad\u0131r. Java kod \u00f6rnekleri ile ad\u0131m ad\u0131m ilerleyerek, bu konuda uzmanl\u0131k seviyesine ula\u015fman\u0131za yard\u0131mc\u0131 olaca\u011f\u0131z. Daha fazla bilgi i\u00e7in fatihsoysal.com sitesini ziyaret edebilirsiniz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-26T06:30:26+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme\",\"datePublished\":\"2025-08-26T06:30:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/\"},\"wordCount\":1751,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/\",\"name\":\"Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-08-26T06:30:26+00:00\",\"description\":\"Veri yap\u0131lar\u0131 ve algoritmalar (DSA) alan\u0131nda, \u00f6nek ve son ek problemleri, metin i\u015fleme, biyoinformatik ve veri madencili\u011fi gibi \u00e7e\u015fitli alanlarda yayg\u0131n olarak kar\u015f\u0131m\u0131za \u00e7\u0131kar. Bu problemler, bir dizenin ba\u015f\u0131nda veya sonunda yer alan belirli alt dizileri (\u00f6nekler ve son ekler) bulmay\u0131 veya i\u015flemeyi gerektirir. Bu makale, Java dilini kullanarak, farkl\u0131 karma\u015f\u0131kl\u0131k seviyelerinde \u00f6nek ve son ek problemlerini ele almay\u0131, \u00e7\u00f6z\u00fcm stratejilerini detayl\u0131 bir \u015fekilde a\u00e7\u0131klamay\u0131 ve ger\u00e7ek d\u00fcnya \u00f6rnekleri ile peki\u015ftirmeyi ama\u00e7lamaktad\u0131r. Java kod \u00f6rnekleri ile ad\u0131m ad\u0131m ilerleyerek, bu konuda uzmanl\u0131k seviyesine ula\u015fman\u0131za yard\u0131mc\u0131 olaca\u011f\u0131z. Daha fazla bilgi i\u00e7in fatihsoysal.com sitesini ziyaret edebilirsiniz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme","description":"Veri yap\u0131lar\u0131 ve algoritmalar (DSA) alan\u0131nda, \u00f6nek ve son ek problemleri, metin i\u015fleme, biyoinformatik ve veri madencili\u011fi gibi \u00e7e\u015fitli alanlarda yayg\u0131n olarak kar\u015f\u0131m\u0131za \u00e7\u0131kar. Bu problemler, bir dizenin ba\u015f\u0131nda veya sonunda yer alan belirli alt dizileri (\u00f6nekler ve son ekler) bulmay\u0131 veya i\u015flemeyi gerektirir. Bu makale, Java dilini kullanarak, farkl\u0131 karma\u015f\u0131kl\u0131k seviyelerinde \u00f6nek ve son ek problemlerini ele almay\u0131, \u00e7\u00f6z\u00fcm stratejilerini detayl\u0131 bir \u015fekilde a\u00e7\u0131klamay\u0131 ve ger\u00e7ek d\u00fcnya \u00f6rnekleri ile peki\u015ftirmeyi ama\u00e7lamaktad\u0131r. Java kod \u00f6rnekleri ile ad\u0131m ad\u0131m ilerleyerek, bu konuda uzmanl\u0131k seviyesine ula\u015fman\u0131za yard\u0131mc\u0131 olaca\u011f\u0131z. Daha fazla bilgi i\u00e7in fatihsoysal.com sitesini ziyaret edebilirsiniz.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/","og_locale":"tr_TR","og_type":"article","og_title":"Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme","og_description":"Veri yap\u0131lar\u0131 ve algoritmalar (DSA) alan\u0131nda, \u00f6nek ve son ek problemleri, metin i\u015fleme, biyoinformatik ve veri madencili\u011fi gibi \u00e7e\u015fitli alanlarda yayg\u0131n olarak kar\u015f\u0131m\u0131za \u00e7\u0131kar. Bu problemler, bir dizenin ba\u015f\u0131nda veya sonunda yer alan belirli alt dizileri (\u00f6nekler ve son ekler) bulmay\u0131 veya i\u015flemeyi gerektirir. Bu makale, Java dilini kullanarak, farkl\u0131 karma\u015f\u0131kl\u0131k seviyelerinde \u00f6nek ve son ek problemlerini ele almay\u0131, \u00e7\u00f6z\u00fcm stratejilerini detayl\u0131 bir \u015fekilde a\u00e7\u0131klamay\u0131 ve ger\u00e7ek d\u00fcnya \u00f6rnekleri ile peki\u015ftirmeyi ama\u00e7lamaktad\u0131r. Java kod \u00f6rnekleri ile ad\u0131m ad\u0131m ilerleyerek, bu konuda uzmanl\u0131k seviyesine ula\u015fman\u0131za yard\u0131mc\u0131 olaca\u011f\u0131z. Daha fazla bilgi i\u00e7in fatihsoysal.com sitesini ziyaret edebilirsiniz.","og_url":"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-08-26T06:30:26+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"9 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme","datePublished":"2025-08-26T06:30:26+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/"},"wordCount":1751,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/","url":"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/","name":"Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-08-26T06:30:26+00:00","description":"Veri yap\u0131lar\u0131 ve algoritmalar (DSA) alan\u0131nda, \u00f6nek ve son ek problemleri, metin i\u015fleme, biyoinformatik ve veri madencili\u011fi gibi \u00e7e\u015fitli alanlarda yayg\u0131n olarak kar\u015f\u0131m\u0131za \u00e7\u0131kar. Bu problemler, bir dizenin ba\u015f\u0131nda veya sonunda yer alan belirli alt dizileri (\u00f6nekler ve son ekler) bulmay\u0131 veya i\u015flemeyi gerektirir. Bu makale, Java dilini kullanarak, farkl\u0131 karma\u015f\u0131kl\u0131k seviyelerinde \u00f6nek ve son ek problemlerini ele almay\u0131, \u00e7\u00f6z\u00fcm stratejilerini detayl\u0131 bir \u015fekilde a\u00e7\u0131klamay\u0131 ve ger\u00e7ek d\u00fcnya \u00f6rnekleri ile peki\u015ftirmeyi ama\u00e7lamaktad\u0131r. Java kod \u00f6rnekleri ile ad\u0131m ad\u0131m ilerleyerek, bu konuda uzmanl\u0131k seviyesine ula\u015fman\u0131za yard\u0131mc\u0131 olaca\u011f\u0131z. Daha fazla bilgi i\u00e7in fatihsoysal.com sitesini ziyaret edebilirsiniz.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/java-ile-onek-ve-son-ek-problemlerini-cozme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Java ile \u00d6nek ve Son Ek Problemlerini \u00c7\u00f6zme"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/28271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=28271"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/28271\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=28271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=28271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=28271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}