信息学奥赛一本通 1146:判断字符串是否为回文 | OpenJudge NOI 1.7 33:判断字符串是否为回文
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1146:判断字符串是否为回文 | OpenJudge NOI 1.7 33:判断字符串是否为回文
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 1146:判斷字符串是否為回文
OpenJudge NOI 1.7 33:判斷字符串是否為回文
【題目考點】
1. 字符串遍歷
如何遍歷字符串的一半?
如果字符串長度為len,那么len/2指向中間或中間偏左的位置。
如圖:
如果將遍歷的循環過程寫為:
for(int i = 0; i < len/2; ++i)
那么即為遍歷字符串的左半邊
【題解思路及代碼】
解法1:遍歷一半字符串
判斷一個字符串是不是回文字符串,就看前后對應字符是否相同
第0個字符和第len-1字符對應,
第1字符和第len-2字符對應。。。
第i字符和第len-i-1字符對應
所以遍歷一半字符串,判斷條件為s[i] == s[len-i-1],如果不滿足,則該字符串不是回文字符串。
解法2:設兩個變量下標
設下標i從前向后遍歷,同時設下標j從后向前遍歷,看i,j指向的字符是否相同。如果不同,那么不是回文字符串。
#include<bits/stdc++.h> using namespace std; int main() {char s[105];cin>>s;int len = strlen(s);for(int i = 0, j = len - 1; i < j; ++i, --j){if(s[i] != s[j]){cout << "no";return 0;}}cout << "yes";return 0; }解法3:使用倒轉字符串函數
使用algorithm中的reverse函數,翻轉字符串
#include<bits/stdc++.h> using namespace std; int main() {string s1, s2;cin>>s1;s2 = s1;//復制s1到s2reverse(s2.begin(), s2.end());//將s2前后翻轉if(s1 == s2)//如果s1和s2相同cout << "yes";elsecout << "no";return 0; }總結
以上是生活随笔為你收集整理的信息学奥赛一本通 1146:判断字符串是否为回文 | OpenJudge NOI 1.7 33:判断字符串是否为回文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息奥赛一本通(1325:【例7.4】
- 下一篇: 信息学奥赛一本通(1145:字符串p型编