使用迴文檢查工具測試一個單字、片語、句子或最多一百萬個 Unicode 碼點的數字,方法是經過 NFKC 正規化後,從兩端比對一組透明、不分大小寫的字母與數字字串。若要進行 GFG 風格的迴文檢查,核心工作是重現題目所規定的規則:判斷輸入為何、移除或忽略題目不計算的部分,然後驗證剩餘序列正讀與反讀是否相同。迴文檢查工具透過在瀏覽器本機處理文字、無需帳號或上傳,並顯示精確的正規化字串、保留字元數以及是非判斷,使驗證過程一目了然。它會忽略空格、標點、符號與表情符號,但保留 Unicode 字母與數字。它使用固定的英文地區設定進行小寫轉換,並套用 Unicode NFKC 正規化,這可讓相容字元以相同方式進行比對,但不會進行轉寫或移除重音。原始文字不會被更改,判斷結果也並非基於隱藏的門檻。沒有保留任何字母或數字、UTF-16 格式錯誤,或超過一百萬個 Unicode 碼點的輸入,會在沒有部分判斷的情況下回傳錯誤。這樣的限制、可見的規則與精確輸出的組合,讓這款檢查工具在您將答案調整為符合 GFG 題目特定的語言或規則之前,能用來檢查答案。

使用 迴文檢查工具 來測試您打算進行推導的精確數值,然後將其輸出視為單一正規化規則的透明紀錄。若 GFG 題目要求嚴格的逐字元比對,請在提交的解答中保留原始的空格、標點、符號與大小寫,即使工具回報不同的結果。若題目定義的是英數迴文,請比對工具的 Unicode 字母或數字範圍、小寫規則與 NFKC 步驟。因此,當線上結果能回答兩個問題時最為有用:此數值是否符合已公布的規則,以及您的程式碼是否將相同的規則套用於每一個被接受的輸入?

check for palindrome gfg
check for palindrome gfg

GFG 迴文檢查遵循題目的規則

迴文是指正讀與反讀相同的序列。常見的例子包括「dad」、「1881」、「race car」,以及「A man, a plan, a canal: Panama」。基本定義並未解決一個程式設計細節:比對序列中包含哪些字元。依題目不同,解答可能計算每一個可見字元,或忽略大小寫及選定的非字母字元。

在程式設計領域中,GFG 通常用於表示 GeeksforGeeks。搜尋「check for palindrome gfg」可能會導向一道要求布林答案、函式或驗證片語方式的練習題。迴文檢查工具能測試所提供的數值並揭露特定規則的結果,但當題目要求撰寫程式碼時,它無法取代實作工作。首先請判斷預期答案是採用檢查工具的正規化比對,還是題目的原始字元比對。

  • 題目是否計算空格、標點、符號與表情符號?
  • 比對是否區分大小寫,或應讓大寫與小寫字母相符?
  • 僅保留字母與數字,還是必須保留原始拼字不變?
  • 題目是否對輸入、輸出、記憶體或字元施加其自身的限制?

不同的結果並不必然代表某個檢查工具有誤。它們可能反映不同的定義。本工具透過顯示所比對的精確字串來消除此不確定性。這使得「是」的結果在其公布的規則下可重現,同時所顯示的規則在提交任何答案之前仍可與 GFG 題目進行比對。

如何在線上檢查 GFG 迴文

  1. 閱讀 GFG 題目的輸入與正規化規則。記錄空格、標點、符號、大小寫及 Unicode 字元是否納入計算。同時記下題目所施加的任何額外限制。
  2. 輸入精確的測試數值。將一個單字、片語、句子或數字輸入迴文檢查工具。除非是要測試產品本身而非該數值,否則不要包含題目說明、函式簽章、標籤或無關的註記。
  3. 執行檢查工具。處理過程在瀏覽器中進行,因此檢查無需帳號或上傳文字。空輸入、UTF-16 格式錯誤,以及超過輸入上限的文字將被拒絕。
  4. 檢視正規化比對字串。確認其中包含該工具設計上要保留的 Unicode 字母與數字。可見字串會顯示比對前 NFKC 正規化與小寫轉換的結果。
  5. 讀取判斷結果與保留字元數。「是」表示所顯示的字串在對稱的 Unicode 碼點位置上一路相符至中央。「否」表示比對在第一個不相符處停止。
  6. 將結果對應到 GFG 規則。將該工具作為所顯示規則的驗證基準,然後在指定的程式語言中實作該規則。請勿在未檢查其正規化的情況下,將線上判斷結果直接複製到嚴格的原始字元解答中。

當驗證完成且下一步是實作時,C++ 迴文演算法與驗證指南 說明了如何將所選規則連結至原始碼。請先確定字元規則:更改保留的內容會同時影響實作與預期答案。

在撰寫程式碼前先讀取正規化輸出

迴文檢查工具從來源產生單一比對字串。它會套用 Unicode NFKC 正規化、使用固定的英文地區設定進行小寫轉換、依 Unicode 碼點進行迭代,並僅保留具有 Unicode 字母或數字屬性的字元。若未保留任何字元則拒絕輸入,接著從兩端向中央比對位置,並在第一個不相符處停止。所顯示的正規化字串、保留數量與布林判斷皆來自同一個比對過程。

記錄的輸入 正規化比對字串 判斷
A man, a plan, a canal: Panama amanaplanacanalpanama Yes
Hello hello No
Été été Yes
Input with no retained letter or number No comparison string is produced Error without a partial verdict

可見的預覽即是實際的比對依據,而非僅供參考的顯示。由於較長的正規化段落可能無法一次顯示,它會以有限的可捲動面板呈現。伴隨的數量描述的是保留字元,而非篩選前的來源字元數。比對使用的是 Unicode 碼點而非原始 UTF-16 碼元,因此輔助字元不會被拆分成不相符的兩半。然而,表情符號不在已公布的字母與數字範圍內,因此會被排除。

處理階段 已公布的行為
Input validation Empty input, malformed UTF-16, and input above one million Unicode code points fail without truncation or a partial verdict.
Unicode normalization NFKC normalization runs before comparison.
Case handling Lowercasing uses a fixed English locale.
Character filtering Unicode letters and numbers are retained; spaces, punctuation, symbols, and emoji are ignored.
Comparison Symmetric Unicode code-point positions are checked from both ends until the center or first mismatch.

將結果對應至 GFG 限制

在將結果調整為 GFG 解答之前,請先判斷該題目是否採用相同的可見拼字規則。嚴格要求比對原始字元的題目,無法透過移除大小寫與標點來重現。反之,僅定義字母與數字的題目,即使原始文字在您的來源變數中未變更,仍可能需要進行篩選。

  • 對於原始比對,請保留每一個來源字元,包括空格、大小寫區分、標點與符號。
  • 對於不分大小寫的比對,請重現題目所指定的小寫轉換行為,而非假設每個地區設定的行為都相同。
  • 對於英數規則,請定義哪些 Unicode 類別納入計算,以及相容字元在 NFKC 下是否會改變。
  • 對於較長的輸入,請記住該檢查工具一百萬碼點的上限是產品本身的限制,並非允許您忽略 GFG 題目中的限制。

線上判斷結果同樣也不是已提交的程式。它不會從標準輸入讀取、輸出布林結果,或實作您所要求的時間與空間行為。正確的解答必須將相同的保留字元定義套用於競賽實際的輸入範圍。使用檢查工具測試數值很有用,因為它能讓您比較預期的正規化字串與您自行實作所產生的結果。

重音提供了一個清楚的範例,說明為何必須先閱讀規則。「Été」會變成「été」,在檢查工具的規則下是迴文,但該工具並不移除重音,也不進行跨語言的轉寫。若 GFG 題目要求移除重音,請遵循該題目的規則。同樣地,NFKC 可使相容字元以相同方式進行比對,但它並非適用於所有語言的通用等價系統。

Unicode、限制與適當用途

Unicode 的處理方式明確而非近似。表情符號會被排除,而非作為比對單位使用;輔助字元也不會被原始 UTF-16 反轉所切割。僅由標點、空白字元或表情符號組成的輸入,由於未保留任何字母或數字,因此無法產生迴文判斷。同樣地,空輸入、UTF-16 格式錯誤,以及超過一百萬個 Unicode 碼點的文字,會回傳明確的錯誤。該工具絕不會為了產生結果而截斷來源文字。

  • 使用檢查工具處理文字遊戲、課堂範例、謎題、識別項、數字序列,以及偵錯正規化規則。
  • 請勿將其視為 DNA 迴文分析工具、加密工具、抄襲偵測器或語義比對系統。
  • 請勿假設它會移除重音、執行轉寫、擴展所有語言特定的等價、比較發音、識別詞界或判斷意義。
  • 請遵循競賽更嚴格或不同的規則,而非將該工具的正規化結果視為通用標準。

要獲得最清晰的 GFG 工作流程,請閱讀題目、識別其精確的輸入與正規化規則、在迴文檢查工具中測試數值、檢視所顯示的比對字串與數量,然後在程式碼中重現相同的決策。「是」對該工具所記錄的規則而言具有意義,「否」則指出在該規則下存在不相符之處。同時將判斷結果與正規化字串與題目要求進行比對,可在不隱藏規則差異的情況下保持結果的實用性。

若您正在權衡選項,Check for Palindrome in JavaScript: Methods and Verify 對此有詳細說明。