2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14
go
func isStraight(nums []int) bool {
if len(nums) < 5 {
return false // 数组长度小于5,不能构成顺子
}
sort.Ints(nums)
var jokerCount int
for i, num := range nums {
if num == 0 {
jokerCount++ // 计数0值
continue
}
// 排除0后,检查是否有重复的数字
if i > 0 && nums[i] == nums[i-1] {
return false
}
}
// 检查排除0后的数组长度和最后一个与第一个数字的差值
validCount := len(nums) - jokerCount
if validCount == 5 {
// 只有当排除0后剩下5个有效数字时,才检查顺子条件
return nums[4-jokerCount] - nums[0] < 5
}
return false
}
php
function isStraight($nums) {
if (count($nums) < 5) {
return false; // 数组长度小于5,不能构成顺子
}
sort($nums);
$jokerCount = 0;
for ($i = 0; $i < count($nums); $i++) {
if ($nums[$i] === 0) {
$jokerCount++; // 计数0值
continue;
}
// 排除0后,检查是否有重复的数字
if ($i > 0 && $nums[$i] === $nums[$i - 1]) {
return false;
}
}
$validCount = count($nums) - $jokerCount;
if ($validCount === 5) {
// 只有当排除0后剩下5个有效数字时,才检查顺子条件
return $nums[count($nums) - 1 - $jokerCount] - $nums[$jokerCount] < 5;
}
return false;
}