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