個人實現比較簡單就是兩個指針一頭一尾,對比兩個值是否相等,若是題目改變:尋找最大回文,方法一樣適用,修改起始索引便可;git
string huiwen = "abcdcba"; #region 判斷迴文 static void checkHuiWen(string str) { bool result = true; char[] arr = str.ToArray(); /** * 迴文對比中心索引兩邊值,依次作比較; * */ int index = arr.Length - 1 / 2; int end = arr.Length - 1; for (int i = 0; i < index; i++) { if (arr[i] != arr[end - i]) { result = false; break; } } if (result) System.Console.Write("say yes"); else System.Console.Write("say no"); } #endregion
say yes;數組
string huiwen = "abcdedcocde"; #region 最大回文字符串 static void maxHuiWenString(string str) { char[] arr = str.ToArray(); string tempStr = ""; string result = ""; /** * 以數組每一個數字爲中心,先後比較,若是前值等於後值則記錄; * 循環體結束以後,進行多個迴文比較,長度最大的保留; * */ for (int i = 0; i < arr.Length; i++) { for (int j = 1; j <= i; j++) { if ((i - j) > 0 && (i + j) < arr.Length && arr[i - j] == arr[i + j]) { if (tempStr == "") tempStr = arr[i].ToString(); tempStr = arr[i - j] + tempStr + arr[i + j]; } else break; } if (tempStr.Length >= result.Length) { result = tempStr; tempStr = ""; } } System.Console.WriteLine(result); } #endregion
decocdeui