OpenJudge NOI 1.7 17:字符串判等
生活随笔
收集整理的這篇文章主要介紹了
OpenJudge NOI 1.7 17:字符串判等
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目鏈接】
OpenJudge NOI 1.7 17:字符串判等
【題目考點】
1. 字符串
2. 大小寫轉換
'a’的ASCII碼是97,'A’的ASCII碼是65,同一字母的大小寫字母的ASCII碼差值為32。小寫轉大寫:減32;大寫轉小寫:加32。
【題解代碼】
解法1:將字符串中的字母都轉為小寫字母,去掉所有空格,而后比較
#include <bits/stdc++.h> using namespace std; void proc(char s[])//將s中所有字母都轉為小寫字母,并去掉所有空格 {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的下標,j為s2的下標。i,j不斷向后移動,如果遇到空格則跳過。比較s1[i]和s2[j],如果相同,看后一個字符。如果不同,則兩個字符串不同。
#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]都轉為小寫后,看是否相同 i++, j++;elsebreak;}if(s1[i]=='\0' && s2[j]=='\0')//如果i,j都遍歷到最后 cout << "YES";elsecout << "NO";return 0; } 新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的OpenJudge NOI 1.7 17:字符串判等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle关联视图查询满_对于复杂的S
- 下一篇: php 仿电脑桌面系统,EonerCMS