【C++】程式碼和解釋 — 檢測該字串是否為迴圈
“ 重新梳理整個思路 ”
分享完整連結 //n.sfs.tw/m10681
分享連結 【C++】程式碼和解釋 — 檢測該字串是否為迴圈 @精讚(文章歡迎轉載,請尊重版權註明連結來源)
2020-11-20 17:27:09 By 過路君子
#include<iostream> //導入iostream這個工具
#define UNI 5000 //定義值為5000的變數UNI
using namespace std; //使用std命名空間
void filter(char x[UNI]) //建立名為filter的類別,其需餵入字元陣列
{
char a[UNI]; //定義變數a為字元陣列,長度5000
int b, c=0; //定義變數b, c為整數,其c初始值為零
for(int d=0;x[d]!='\0';d++) //此迴圈會把餵入字元陣列每一個都讀一遍
{
b = (int) x[d]; //將x的第d+1個字元強制轉換成整數儲存在b裡面
if(64<b && b<91) a[c] = (char) b, c++; //如果b的數值落在65~90之間(即字元為'A'~'Z')則a的第c+1個字元設成強制轉換成字元型態的b且c的數值+1
else if(96<b && b<123) //若b的數值落在97~122之間(即字元為'a'~'z')
{
b -= 32; //將b的值減去32之後存回
a[c] = (char) b; //將a的第c+1個字元設成強制轉換成字元型態的b
c++; //c的數值+1
}
else //若都不是
{
x[d] = '\0'; //則將目前讀取的字元清空
continue; //結束執行這次迴圈,開始下一回圈
}
x[d] = '\0'; //清空目前讀取的字元
}
for(int d=0;a[d]!='\0';d++) x[d] = a[d]; //將a字元陣列的值複製到x字元陣列
}
bool comparison(char x[UNI]) //建立名為comparison的區塊,其需餵入字元陣列,但返回布林值
{
char a[UNI]; //定義變數a為字元陣列,長度5000
int b, e; //定義變數b, e為整數
for(b=0;;b++) if(x[b]=='\0') break; //偵測餵入的字元陣列長度
e = b; //將e的值設成b
b--; //b的值-1
for(int c=0;x[c]!='0';c++) //此迴圈會把餵入字元陣列每一個都讀一遍
{
a[b] = x[c]; //將a字元陣列最末端的值設成x字元陣列的第c+1個字元
b--; //b的值-1
} //此時a字元陣列等於x字元陣列倒過來的樣子
for(b=0;x[b]!='\0';b++) if(a[b] != x[b]) break; //偵測a陣列是否與x陣列相同
if(e==b) return true; //如果a陣列和x陣列相等,則返回true值(1)
else return false; //否則返回false值(0)
}
int main(void) //主程式
{
char a[UNI]; //定義變數a為字元陣列,長度5000
bool b; //定義變數b為布林值
while(cin >> a) //直到EOF前持續讀取資料並存入變數a
{
filter(a); //給入a值並執行filter類別
b = comparison(a); //將b值設成從comparison所返回的true或false值
if(b) cout << "yes\n"; //若b值為1則輸出yes
else cout << "no\n"; //否則輸出no
}
}
相關連結
http://n.sfs.tw/content/index/14818
END
你可能有興趣
【投票結果】第15回 東方Project 人氣投票
第15回的投票也漂亮的落幕了~
【Java】<JAVA_HOME>/lib/ext exists, extensions mechanism no longer supported;Use -classpath instead
執行JAVA的時候遇上該奇怪的錯誤
【CentOS 8】 防火牆基本操作
因為常用怕忘記,所以在這裡放一份來記憶。
【C++】程式碼和解釋 — 檢測該字串是否為迴圈
重新梳理整個思路
【地下城物語】在諸神的棋牌裡面發現了鑽石棋子?!
聽說鑽石棋子很難刷出來?!
【阿瑞斯病毒】中文Wiki網站
一個可以大家共同編輯的頁面,只可惜目前還沒有很多人編輯
