如何将特定字符串变成回文结构

时间:2016-06-07 13:13:33

标签: c# arrays string linq list

我有一个小写字母的字符串,应该确定该字符的索引,其删除将使字符串成为回文。 例子:

aaab 3 - >如果我删除索引3处的char将得到 - > AAA

baa 0 - >删除b将给回文aa

2 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分: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;
    }