信息学奥赛一本通 2044:【例5.12】回文字串
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 2044:【例5.12】回文字串
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 2044:【例5.12】回文字串
【題目考點】
1.遍歷字符串的一半
如果字符串長度為len,那么len/2指向中間或中間偏左的位置。
如圖:
如果將遍歷的循環(huán)過程寫為:
for(int i = 0; i < len/2; ++i)
那么即為遍歷字符串的左半邊
【解題思路】
解法1:遍歷一半字符串
假設字符串長度為len,字符下標從0~len-1
先看第0個和第len-1字符是否相同,
在看第1和第len-2字符是否相同…
看第i和第len-i-1字符是否相同
遍歷一半字符串,即可完成上述比較。如果出現(xiàn)對應字符不同的情況,那么這個字符串不是回文串。如果對應字符都相同,那么它是回文串。
解法2:構造逆序字符串
構造一個新的逆序字符串,看和原字符串是否相同。如果相同,那么這是一個回文串。
【注意】輸入的字符串最后有一個’.’,而判斷回文串時不考慮這個’.’,需要先將其從字符串中移除。
【題解代碼】
解法1:遍歷一半字符串
#include<bits/stdc++.h> using namespace std; int main() {char s[105];cin >> s;int len = strlen(s) - 1;//去掉最后的'.'for(int i = 0; i < len/2; ++i)//遍歷一半字符串{if(s[i] != s[len-i-1]){//存在不對應的字符,不是回文串cout << "No";return 0;}}cout << "Yes";return 0; }解法2:構造逆序字符串
- 字符數組
- string類
總結
以上是生活随笔為你收集整理的信息学奥赛一本通 2044:【例5.12】回文字串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通 1937:【06NOI
- 下一篇: HTML页面使用vant控件,如何优雅的