Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package intUtil
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"time"
|
||||
)
|
||||
|
||||
// ShuffleIntDigits 打乱整数的各个数字位置并返回新的整数
|
||||
func ShuffleIntDigits(num int64) (int64, error) {
|
||||
if num < 0 {
|
||||
return 0, fmt.Errorf("number must be non-negative")
|
||||
}
|
||||
|
||||
var digits []int64
|
||||
for num > 0 {
|
||||
digits = append(digits, num%10)
|
||||
num /= 10
|
||||
}
|
||||
|
||||
// 如果原始数字是0,直接返回
|
||||
if len(digits) == 0 {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
// 反转切片以保持原来的数字顺序
|
||||
for i, j := 0, len(digits)-1; i < j; i, j = i+1, j-1 {
|
||||
digits[i], digits[j] = digits[j], digits[i]
|
||||
}
|
||||
|
||||
// 打乱数字切片
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
rand.Shuffle(len(digits), func(i, j int) {
|
||||
digits[i], digits[j] = digits[j], digits[i]
|
||||
})
|
||||
|
||||
// 重新组合为新的整数
|
||||
result := int64(0)
|
||||
for _, digit := range digits {
|
||||
result = result*10 + digit
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user