PAT乙 1014 福尔摩斯的约会 (GO实现)

解题思路:
前面2组字符串
1.第1对相同的大写英文字母(A-G,我开始以为是A-Z然后%7取余,发现没意义,测试点好像也就只有A-G)
2.第 2 对相同的字符(0-9,A-N)
3.用flag作为标记位,标记第1,2个字符串比较时的第一次字符相等
后面2组字符串
1.第 1 对相同的英文字母 (a-z,A-Z)

package main

import "fmt"

func main() {
	var s1,s2,s3,s4 string
	day := 0
	hour := 0
	week := map[int]string{
		1: "MON",
		2: "TUE",
		3: "WED",
		4: "THU",
		5: "FRI",
		6: "SAT",
		7: "SUN",
	}

	fmt.Scanf("%s", &s1)
	fmt.Scanf("%s", &s2)
	fmt.Scanf("%s", &s3)
	fmt.Scanf("%s", &s4)

	temp1 := []byte(s1)
	temp2 := []byte(s2)
	temp3 := []byte(s3)
	temp4 := []byte(s4)

	len1 := len(temp1)
	len3 := len(temp3)

	flag := false
	for i:=0; i<len1; i++ {
		if !flag && temp1[i] == temp2[i] && temp1[i] >= 'A' && temp1[i] <= 'G' {
			day = int(temp1[i] - 'A') + 1
			fmt.Printf("%s ", week[day])
			flag = true
		} else if flag && temp1[i] == temp2[i] {
			if temp1[i] >= 'A' && temp1[i] <= 'N' {
				hour = int(temp1[i] - 'A') + 10
			} else if temp1[i] >= '0' && temp1[i] <= '9'  {
				hour = int(temp1[i] - '0') + 10
			} else {
				hour = int(temp1[i] - 'a') + 10
			}
			fmt.Printf("%02d:", hour)
			break
		}
	}

	for i:=0; i<len3; i++ {
		if temp3[i] == temp4[i] {
			if (temp3[i] >= 'A' && temp3[i] <= 'Z') || (temp3[i] >= 'a' && temp3[i] <= 'z') {
				fmt.Printf("%02d", i)
				break
			}
		}
	}
}

初学GO语言,可能很多语法,变量定义有问题,如果有大神看到,帮忙指出哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值