Codebar 程式酒吧

一座輕鬆學習程式的酒吧

0%

a022. 迴文

題目連結

https://zerojudge.tw/ShowProblem?problemid=a022

建議類題

a224. 明明愛明明

解題思路

迴文,是指字串不論是從正向讀還是反向讀均相同,也就是說迴文字串必定頭尾對稱。因此,我們可以利用for迴圈檢查。若長度為len的字串,第i項等於第len-i-1項,就將計數變數count值+1。若count值等於len/2,就代表該字串符合迴文的條件。

注意事項

在C語言的語法裡,陣列的最後一項是空字元,也就是說若今天有一個大小為i項的陣列,那麼它可以儲存的項數是i-1項!

程式碼:C語言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
int main() {
//宣告並讀取陣列arr,代表輸入的字串
char arr[1000];
scanf("%s", arr);
//宣告變數count,代表前後對稱的組數
int count = 0;
//迴文字串必然對稱,因此我們可以檢查該字串前後對應到的項是否相同
//若發現字串的任一組頭尾不同,即非迴文,輸出no後跳出迴圈
for(count = 0 ; count < strlen(arr)/2 ; count++) {
if(arr[count] != arr[(strlen(arr)-1)-count]) {
printf("no");
break;
}
}
//即非迴文到字串的一半都未發現不同的組,則為迴文,輸出yes
if(count == strlen(arr)/2)
printf("yes");
return 0;
}