我有一个小写字母的字符串,应该确定该字符的索引,其删除将使字符串成为回文。 例子:
aaab 3 - >如果我删除索引3处的char将得到 - > AAA
baa 0 - >删除b将给回文aa
答案 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;
}