OpenJudge NOI 1.7 17:字符串判等
生活随笔
收集整理的這篇文章主要介紹了
OpenJudge NOI 1.7 17:字符串判等
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【題目鏈接】
OpenJudge NOI 1.7 17:字符串判等
【題目考點(diǎn)】
1. 字符串
2. 大小寫(xiě)轉(zhuǎn)換
'a’的ASCII碼是97,'A’的ASCII碼是65,同一字母的大小寫(xiě)字母的ASCII碼差值為32。小寫(xiě)轉(zhuǎn)大寫(xiě):減32;大寫(xiě)轉(zhuǎn)小寫(xiě):加32。
【題解代碼】
解法1:將字符串中的字母都轉(zhuǎn)為小寫(xiě)字母,去掉所有空格,而后比較
#include <bits/stdc++.h> using namespace std; void proc(char s[])//將s中所有字母都轉(zhuǎn)為小寫(xiě)字母,并去掉所有空格 {int len = strlen(s), j = 0;//j填充位置 for(int i = 0; i < len; ++i){if(s[i] >= 'a' && s[i] <= 'z')s[j++] = s[i];else if(s[i] >= 'A' && s[i] <= 'Z')s[j++] = s[i] + 32;}s[j] = '\0'; } int main() {char s1[105], s2[105];cin.getline(s1, 105);cin.getline(s2, 105);proc(s1);proc(s2);if(strcmp(s1, s2) == 0)cout << "YES";elsecout << "NO";return 0; }解法2:雙指針
i為s1的下標(biāo),j為s2的下標(biāo)。i,j不斷向后移動(dòng),如果遇到空格則跳過(guò)。比較s1[i]和s2[j],如果相同,看后一個(gè)字符。如果不同,則兩個(gè)字符串不同。
#include <bits/stdc++.h> using namespace std; int main() {char s1[105], s2[105];cin.getline(s1, 105);cin.getline(s2, 105);int i = 0, j = 0;while(true){if(s1[i] == ' ')i++;else if(s2[j] == ' ')j++;else if(s1[i] == '\0' || s2[j] == '\0')break;else if(tolower(s1[i]) == tolower(s2[j]))//將s1[i]與s2[j]都轉(zhuǎn)為小寫(xiě)后,看是否相同 i++, j++;elsebreak;}if(s1[i]=='\0' && s2[j]=='\0')//如果i,j都遍歷到最后 cout << "YES";elsecout << "NO";return 0; } 新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的OpenJudge NOI 1.7 17:字符串判等的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oracle关联视图查询满_对于复杂的S
- 下一篇: 信息学奥赛一本通 1178:成绩排序 |