首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

回文與鏡像字串判斷演算法:C++ 實作解析

     編輯:C++ 入門

什麼是回文與鏡像字串?

在字串處理中,回文指正向與反向讀取結果相同的序列(如 ISABTCTBASI);鏡像字串則是指字元經過鏡像映射後,序列呈現左右對稱(如 ESTAT23)。本文透過一個經典的 C++ 程式範例,示範如何同時判斷字串是否為回文、鏡像字串、鏡像回文,或兩者皆非。

核心邏輯與程式碼解析

程式定義了一個鏡像對照表 rev,涵蓋大寫字母 A-Z 與數字 0-9 的鏡像字元(無對應者以空格佔位)。主流程讀取輸入字串,分別呼叫 isPalindromes() 與 isMirror() 判斷兩項特性,最後根據旗標輸出四種結果之一:

  • not a palindrome
  • a regular palindrome
  • a mirrored string
  • a mirrored palindrome

關鍵函數實作

bool isPalindromes(char s[]) {
    long len = strlen(s);
    for (int i = 0; i < len / 2; i++) {
        if (s[i] != s[len - 1 - i]) return false;
    }
    return true;
}

char r(char ch) { // 取得鏡像字元
    if (isalpha(ch)) return rev[ch - 'A'];
    return rev[ch - '0' + 25];
}

bool isMirror(char s[]) {
    long len = strlen(s);
    for (int i = 0; i < len / 2; i++) {
        if (r(s[i]) != s[len - i - 1]) return false;
    }
    return true;
}

執行流程說明

main() 以 scanf 迴圈讀取字串,若同時通過回文與鏡像檢查,則為「鏡像回文」;若僅通過其中一項,則歸類為對應類別。此演算法時間複雜度為 O(n),空間複雜度 O(1),適合線上判題與嵌入式系統應用。

應用場景與延伸

此類判斷常見於密碼學驗證、資料完整性檢查、基因序列分析等領域。理解鏡像映射表的建立與雙指針遍歷技巧,有助於解決更複雜的字串對稱性問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved