2016-06-07 19 views
-4

我有一個小寫字母的字符串,應該確定刪除字符串的迴文字符的索引。 例子:如何將特定的字符串製作迴文

AAAB 3 - >如果我刪除字符在索引3將得到 - > AAA

咩0 - >刪除B就給予迴文AA

+0

你嘗試了什麼?我們不是來做一些家庭作業;-) –

+0

大聲笑 - @ JeroenvanLangen也許我們應該放棄它。 –

+0

是的,當然我想知道是否有任何使用LINQ的簡短解決方案,但無法找到它:( – V55

回答

1

如果您知道,只有一個字符將被要求以去除形成迴文,那麼你可以簡單地遍歷列表,看看當你滿足條件:

// 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; 
     } 
} 

同樣的,如果你想總是確保這是一個字符串是迴文,你可以使用它的定義,簡單地用它的反向串聯它:

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

這是複雜的,但你會得到所需的輸出。

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; 
    } 
相關問題