[R62B] 字符串判断
- 难度 入门
- 时限 1s
- 空限 512m
- 字符串
数据规模:,字符串仅由小写字母和
?组成。
思路
逐位比较 和 :某一位能同时成立的条件是两字符相同,或者其中至少一个是 ?(? 可以替换成任意小写字母,包括另一个字符本身)。所有位都满足则输出 Yes,否则 No。
复杂度:时间 ,空间 。
仓颉实现
import std.env.*
import std.convert.*
main(): Int64 {
let reader = getStdIn()
let n = Int64.parse(reader.readln().getOrThrow())
let s = reader.readln().getOrThrow()
let t = reader.readln().getOrThrow()
var ok = true
for (i in 0..n) {
if (s[i] != t[i] && s[i] != UInt8(0x3F) && t[i] != UInt8(0x3F)) {
ok = false
break
}
}
println(if (ok) { "Yes" } else { "No" })
return 0
}
要点:
- 不匹配只有一种情况:两个字符都不等于对方,且两者都不是
?(0x3F)。 - 发现不匹配立即
break,不必扫描完整个字符串。