python提交后竟然WA: 返回非零,不知道怎么搞,还是回到C的怀抱做题好了 —— 用py自带的GUI写代码真是太慢了!
字符串的模拟题,和PAT-A的1061相同。
这是之前写的C+=代码,注意到因为题目保证一定有解,所以在for迭代中i < s1.size()这样的判断其实是可以省去的,这样代码会简洁一些:
#include <string>
#include <iostream>
using namespace std;
string day[256];
int minute[256];
void init()
{
day['A'] = "MON";
day['B'] = "TUE";
day['C'] = "WED";
day['D'] = "THU";
day['E'] = "FRI";
day['F'] = "SAT";
day['G'] = "SUN";
for (int i = '0'; i <= '9'; ++ i)
{
minute[i] = i - 48;
}
for (int i = 'A'; i <= 'N'; ++ i)
{
minute[i] = i - 'A' + 10;
}
}
void print_day(char c)
{
printf("%s ", day[c].c_str());
}
void print_minute(char c)
{
printf("%02d:", minute[c]);
}
int main()
{
string s1, s2, s3, s4;
cin >> s1 >> s2 >> s3 >> s4;
init();
bool find_day = false;
for (size_t i = 0; i < s1.size() && i < s2.size(); ++ i)
{
if (find_day == false && s1[i] == s2[i] && s1[i] >= 'A' && s1[i] <= 'G')
{
print_day(s1[i]);
find_day = true;
} else if (find_day == true && s1[i] == s2[i]
&& ((s1[i] >= 'A' && s1[i] <= 'N') || (s1[i] >= '0' && s1[i] <= '9')) )
{
print_minute(s1[i]);
break;
}
}
for (size_t i = 0; i < s3.size() && i < s4.size(); ++ i)
{
if (s3[i] == s4[i] &&
((s3[i] >= 'A' && s3[i] <= 'Z') || (s3[i] >= 'a' && s3[i] <= 'z')))
{
printf("%02d\n", i);
break;
}
}
return 0;
}
只通过测试点5的python, 知道为什么出错:返回非零的请告诉我一声:
from __future__ import print_function #!!!!!
if __name__ == '__main__' :
dic = {}
dic['A'] = 'MON'
dic['B'] = 'TUE'
dic['C'] = 'WED'
dic['D'] = 'THU'
dic['E'] = 'FRI'
dic['F'] = 'SAT'
dic['G'] = 'SUN'
s1 = raw_input()
s2 = raw_input()
s3 = raw_input()
s4 = raw_input()
i = 0
while s1[i]<'A' or s1[i]>'G' or s1[i] != s2[i]:
i = i + 1
print(dic[s1[i]], end=' ')
i = i + 1
while s1[i]<'A' or s1[i]>'G' or s1[i] != s2[i]:
i = i + 1
if s1[i] <= '9' and s1[i] >= '0' :
print('0%s'%s1[i], end=':')
else :
print(ord(s1[i])-ord('A')+10, end=':')
i = 0
while ((s3[i]<'a' or s3[i]>'z') and (s3[i]<'A' or s3[i]>'Z')) or s3[i] != s4[i] :
i = i + 1
print('%02d'%i)