问题内容
例如,如果我有数字 35565,则输出为 3565。
所以,我的代码片段得到了个位数,但我不知道如何保留前一个数字以与下一个数字进行检查。
for {num = num / 10fmt.Print(num) if num/10 == 0 { break}}
登录后复制
正确答案
这种方法从右到左将数字分解为数字,将它们存储为整数切片,然后从左到右迭代这些数字以构建具有“连续唯一”数字的数字。
我最初尝试从左到右分解数字,但不知道如何处理占位零;从右到左分解它,我知道如何捕获这些零。
// unique removes sequences of repeated digits from non-negative x,// returning only "sequentially unique" digits:// 12→12, 122→12, 1001→101, 35565→3565.//// Negative x yields -1.func unique(x int) int { switch { case x = 0; i-- { digits[i] = x % 10 x /= 10 } // -- Build new, "sequentially unique", x from left-to-right var prevDigit, newX int for _, digit := range digits { if digit != prevDigit { newX = newX*10 + digit } prevDigit = digit } return newX}
登录后复制
这是一个go playground 进行测试。
可以通过翻转开头的负号并在末尾恢复它来适应处理负数。
以上就是如何打印与前面的数字不同的数字?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2485432.html