# 題目 * 迴文字串是一串數字或字母,從左到右讀取和從右到左讀取相同。 例如,"ABCDEDCBA"是迴文字串。 鏡像字串是一種字串,當該字串的每個元素更改為鏡像(如果它具有鏡像)並且從右到左讀取該字串時,其結果與從左到右讀取原始字串相同。 例如,"3AIAE"是鏡像字符串,因為"A"的鏡像和"I"的鏡像是他們自己,而"3"和"E"為彼此的鏡像。 鏡像迴文是指符合迴文字串標準和鏡像字串標準的字串。 例如,"ATOYOTA"是一個鏡像迴文,"A"、"T"、"O"、"Y"為彼此的鏡像。 該字串從左到右讀取和從右到左讀取相同。 並且每個字元都鏡像替換後從右到左讀取結果,與從左到右讀取原始字串相同。 以下為有效字元鏡像對應表:  請注意,"0"(零)和"O"(字母)被視為相同字符,因此只有字母"O"是有效字符。 # 思路 分別鏡像迴文和迴文為兩個 *bool 函式* ,依照字串的技巧運算得出其解,最後,回到 *answer()* 輸出。 # Code ```C++=1 #include <iostream> #include <string> using ss=std::string; class check{ private: ss ans, Reverse; public: ss reverse(ss original){ for(char &c:original) switch(c){ case 'E':c='3';break;case '3':c='E';break; case 'J':c='L';break;case 'L':c='J';break; case 'S':c='2';break;case '2':c='S';break; case 'Z':c='5';break;case '5':c='Z';break; } return ss(original.rbegin(),original.rend()); } bool ismirrored(const ss original){ return original==reverse(original); } bool ispalindrome(const ss original,const ss Reverse){ return original==Reverse; } ss answer(ss original){ Reverse=ss(original.rbegin(),original.rend()); bool ismir=ismirrored(original), ispalin=ispalindrome(original,Reverse); ans=(ismir&&ispalin?"is a mirrored palindrome.": ismir?"is a mirrored string.": ispalin?"is a regular palindrome.": "is not a palindrome."); return ans; } }Checker; int main() { ss original; while(std::cin>>original){ std::cout<<original<<" -- "<<Checker.answer(original)<<"\n"<<"\n"; } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up