Soru
Programcıya, anlamlı veya anlamsız bir halde kelime/sözcük (girilenDeger) veriliyor. Daha sonra, verilen değerde aranıp bulunması (arananDeger) istenen bir değer de programcıya sunuluyor.
Bu noktadan sonra ise programcıdan, aranan değeri bularak girilen değerde hem düz indeksini hem de tersten indeksini bulması isteniyor.
Örnek
Girdi | Çıktı |
---|---|
(girilenDeger): abcdefaadadacd (arananDeger): c |
Düz-Bulunan indeks: 2 Düz-Bulunan indeks: 12 Ters-Bulunan indeks: 1 Ters-Bulunan indeks: 11 |
(girilenDeger): abcdefaadadacd (arananDeger): aa |
Düz-Bulunan indeks: 6 Ters-Bulunan indeks: 6 |
Çözüm - C#
using System;
using System.Text.RegularExpressions;
internal class Program
{
private static void Main(string[] args)
{
// Kullanıcı tanımlı girilen değerler
String girilenDeger = "abcdefaadadacd";
String arananDeger = "c";
// 1. Düz halde girilen değerler alanı
// Girilen değerleri aranan değerler ile eşleştir
MatchCollection eslesmeler = Regex.Matches(girilenDeger, arananDeger);
// Aranan değerlerin indeks değerini tek tek göster
foreach (Match eslesenDeger in eslesmeler)
Console.WriteLine("Düz-Bulunan indeks: " + (eslesenDeger.Index));
// 2. Terse dönüştürülüp arama yapılan değerler alanı
// Girilen değeri ters döndürmek için önce karakter dizisine at ve dizi metodu ile ters çevirerek string değere aktar
char[] tersDonustur = girilenDeger.ToCharArray();
Array.Reverse(tersDonustur);
String terstenDeger = new string(tersDonustur);
// Ters döndürülen değerleri aranan değerler ile eşleştir
MatchCollection tersEslesmeler = Regex.Matches(terstenDeger, arananDeger);
// Ters döndürülen değerlerin indeks değerini tek tek göster
foreach (Match eslesenDeger in tersEslesmeler)
Console.WriteLine("Ters-Bulunan indeks: " + eslesenDeger.Index);
Console.Read();
}
}
Çözüm - Java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
// Kullanıcı tanımlı girilen değerler
String girilenDeger = "abcdefaadadacd";
String arananDeger = "c";
// 1. Düz halde girilen değerler alanı
// Girilen değerleri aranan değerler ile eşleştir
Pattern arananDesen = Pattern.compile(arananDeger);
Matcher eslesenDeger = arananDesen.matcher(girilenDeger);
// Aranan değerlerin indeks değerini tek tek göster
while (eslesenDeger.find()) {
System.out.println("Düz-Bulunan indeks: " + eslesenDeger.start());
}
// 2. Terse dönüştürülüp arama yapılan değerler alanı
// Girilen değeri ters döndürmek için önce karakter dizisine at ve for döngüsü ile string değere aktar
char[] tersDonustur = girilenDeger.toCharArray();
StringBuilder terstenDeger = new StringBuilder();
for (int i = tersDonustur.length - 1; i >= 0; i--) {
terstenDeger.append(String.valueOf(tersDonustur[i]));
}
// Ters döndürülen değerleri aranan değerler ile eşleştir
Pattern tersArananDesen = Pattern.compile(arananDeger);
Matcher tersEslesenDeger = tersArananDesen.matcher(terstenDeger);
// Ters döndürülen değerlerin indeks değerini tek tek göster
while (tersEslesenDeger.find()) {
System.out.println("Ters-Bulunan indeks: " + tersEslesenDeger.start());
}
}
}