#include <iostream>
#include <string>
using namespace std;
string chars;
int main()
{
while(cin>>chars)
{
int judge1=chars.length();
int judge2=judge1/2;
int judge=0;
for(int i=0;i<=judge2;i++)
if(chars[i]==chars[judge1-i])
judge=1;
if(judge==1)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
}
大致看了一下你的程式有瞭個錯誤:
1. 相對位置索引錯誤,
假設 字串s 的長度為 len ,
其字元的索引值為 s[0]~s[len-1] , (並非 s[0]~s[len] , 因為這樣長度會變成 len+1 )
在字串反轉(左右顛倒)之後,
s[0] 會對應到 s[len-1] ,
s[1] 會對應到 s[len-2] ... ...
可以發現 s[i] 對應的依該是 s[len-i-1] 而非 s[len-i],
所以在判斷式中的 chars[i] 其對應位置應該是 chars[judge1-i-1] 唷~
2. 程式上的邏輯錯誤, (假設上一個問題已經解決了)
以你的程式這樣的寫法會變成,
只要 chars 中任意的 chars[i]==chars[judge1-i-1] 就會輸出 "yes" ,
但依照迴文的定義應該要是所有的 chars[i]==chars[judge1-i-1] 才會是迴文唷~
以上希望有幫助到你~ OwO