电子商务网站建设需要多少钱,网站建设开发语言和使用工具,企业官方网站系统建设,南京博学建设集团网站文章目录 背景题目#xff1a;交换后字典序最小的字符串个人感受 这是双子专栏#xff1a;
Cangjie仓颉程序设计-个人总结 本专栏还在持续更新#xff1a;
仓颉编程cangjie刷题录 背景
报名了一个仓颉的比赛#xff0c;感觉条件要求挺低的#xff0c;就想上。哈哈哈。但… 文章目录 背景题目交换后字典序最小的字符串个人感受 这是双子专栏
Cangjie仓颉程序设计-个人总结 本专栏还在持续更新
仓颉编程cangjie刷题录 背景
报名了一个仓颉的比赛感觉条件要求挺低的就想上。哈哈哈。但是学起来真是很糟心没有资料只有官方文档官方文档写的也就那样。一天下来就刷了这么一道简单题。
题目交换后字典序最小的字符串
题目链接
给你一个仅由数字组成的字符串 s在最多交换一次 相邻 且具有相同 奇偶性 的数字后返回可以得到的字典序最小的字符串。
如果两个数字都是奇数或都是偶数则它们具有相同的奇偶性。例如5 和 9、2 和 4 奇偶性相同而 6 和 9 奇偶性不同。
class Solution {func getSmallestString(s: String): String {var arr Array(s) // ArrayUInt8var zero 0 // Stringfor (i in 0..s.size-1) {var a arr[i] - zero[0] // UInt8var b arr[i 1] - zero[0]if (a b a % 2 b % 2) {var t arr[i]arr[i] arr[i 1]arr[i 1] tbreak}}var res ArrayRune(s.size) {i Rune(0)}for (i in 0..s.size) {res[i] Rune(arr[i])}return String(res)}
}个人感受
这个语言六月份正式发布属于是gpt都没学过的存在网上资料也基本都是抄官方文档。所以写起来就究极蛋疼 我就是想随便选一道题先试试水谁知道遇到了cangjie的一系列大槽点
cangjie默认字符为Unicode编码而且String类型的单个元素取出来类型竟然是一个字节的整型UInt8字符只支持转换为32字节的无符号整型UInt32。字符串不支持修改
本来Unicode我都懵了这还咋玩字符和数字的转换搜了一下发现值在一个字节内的简单字符Unicode值与ASCII值相同的这让我松了一口气。 然而上面三点一列我就试了一天怎么弄。妈的官方的String文档那么大篇幅就写了怎么赋值可以用拼接和能比字典序我真是服了连初始化都不写我是凭借逻辑试了一下直接用String(Array)初始化。然后又是类型错误这种方式只支持ArrayRune类型.
总之这道题就是各种乱七八糟的格式转换。总结如下
先拿到一个可修改的数组 arr Array(s)类型为ArrayUInt8拿到字符’0’的Unicode值构建字符串 zero“0”那么得到其Unicode值为 zero[0]拿到字符的数字值arr[i] - zero[0]做处理拿到一个 ArrayRune类型的数组 res把 arr里面的东西腾到 res里面String(res)即可