【题目链接】
OpenJudge NOI 1.7 32:行程长度编码
【题目考点】
1. 字符串
【解题思路】
本题与OpenJudge NOI 1.7 31:字符串p型编码基本相同。可以参考上一题的解析。(1.7 31解析)
【题解代码】
解法1:使用字符数组
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s[1005], c = '\0';
cin >> s;
int len = strlen(s), num = 0;
for(int i = 0; i <= len; ++i)
{
if(s[i] == c || s[i] - 32 == c)
num++;
else
{
if(c != '\0')
cout << '(' << c << ',' << num << ')';
if(s[i] >= 'a' && s[i] <= 'z')
c = s[i] - 32;
else
c = s[i];
num = 1;
}
}
return 0;
}
解法2:使用string类及<cctype>函数
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
char c = '\0';
cin >> s;
int num = 0;
for(int i = 0; i <= s.length(); ++i)
{
if(toupper(s[i]) == c)
num++;
else
{
if(c != '\0')
cout << '(' << c << ',' << num << ')';
c = islower(s[i]) ? toupper(s[i]) : s[i];
num = 1;
}
}
return 0;
}
|