PAT-B 1014. 福尔摩斯的约会(python, C++)

11 篇文章 0 订阅

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)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值