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

NYOJ 264 國王的魔鏡:字符串折疊求最小原始長度

     編輯:C++ 入門

問題描述

魔鏡操作:字符串一端貼鏡面,鏡像拼接到另一端。如 AB 貼 B 端 → ABBA。給定最終字符串,求可能的最小原始長度。

逆向思維:反復檢查回文前綴

  • 操作本質:若字符串長度為偶數且前半段 == 後半段逆序(即整體為回文),則可能由一半長度字符串鏡像得到。
  • 算法:當前字符串長度 len 為偶數且 s[0..len/2-1] 逆序等於 s[len/2..len-1] 時,len /= 2;重複直到不滿足。
  • 最終 len 即最小原始長度。

完整參考代碼

#include <cstdio>
#include <cstring>
char s[105];
bool canFold(int len){
    if(len%2) return false;
    for(int i=0;i

總結

NYOJ 264 利用鏡像操作的可逆性,反復剝離回文疊加層,核心判斷「前半段逆序等於後半段」,時間 O(L log L),極簡高效。

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