2016-06-07 23 views
-4

Ich habe eine Zeichenfolge aus Kleinbuchstaben und sollte den Index des Zeichens bestimmen, dessen Entfernung die Zeichenfolge zu einem Palindrom macht. Beispiele:Wie man eine bestimmte Zeichenfolge in ein Palindrom einfügt

aaab 3 -> Wenn ich die Zeichen bei Index entfernen 3 erhalten -> aaa

baa 0 -> b entfernen, wird das Palindrom aa

+0

Was haben Sie versucht? Wir sind nicht hier, um Hausaufgaben zu machen ;-) –

+0

LOL - @JeroenvanLangen vielleicht sollten wir es versuchen. –

+0

Ja, sicher, ich frage mich, ob es kurze Lösungen mit LINQ gibt, aber kann es nicht herausfinden :( – V55

Antwort

1

geben Wenn Sie wissen, dass nur eine einzige Charakter wäre erforderlich, um entfernt werden, ein Palindrom zu bilden, dann könnte man einfach durch die Liste durchlaufen und sehen, wenn Sie diese Kriterien erfüllen:

// Loop through your index values in your string 
for(int i = 0; i < input.Length; i++) 
{ 
     // If you removed a certain character, would it form a palindrome? 
     if(IsPalindrome(input.Remove(i,1)){ 
      // If so, return the index 
      return i; 
     } 
} 

Ebenso, wenn Sie zu immer wollten sicherzustellen, dass ein String ist ein Palindrom ist, könnte man seine Definition verwenden und einfach verketten es mit seiner Rückseite:

public string MakePalindrome(string s) 
{ 
    // This will concatenate your string with it's reverse (i.e. ab => abba) 
    return String.Concat(s,s.Reverse()); 
} 
0

Dies ist komplex, aber Sie werden eine erforderliche Ausgabe erhalten.

public string GetPalindrom() 
    { 
     string strInput = "aaab"; 
     string strDistinct = new String(strInput.Distinct().ToArray()); 
     int intOccurence = 0; 
     string outputString = string.Empty; 
     for (int i = 0; i < strDistinct.Length; i++) 
     { 
      intOccurence = 0; 
      foreach (var item in strInput) 
      { 
       if (item == strDistinct[i]) 
        intOccurence++; 
      } 
      if (intOccurence == 1) 
      { 
       outputString = strInput.Remove(strInput.IndexOf(strDistinct[i]),1); 
       break; 
      } 
     } 
     return outputString; 
    } 
Verwandte Themen