当前位置: 首页 > news >正文

仓颉刷题录-字符串数字转换(一)

文章目录

    • 背景
    • 题目:交换后字典序最小的字符串
      • 个人感受

这是双子专栏: Cangjie仓颉程序设计-个人总结
本专栏还在持续更新: 仓颉编程cangjie刷题录

背景

报名了一个仓颉的比赛,感觉条件要求挺低的,就想上。哈哈哈。但是学起来真是很糟心,没有资料,只有官方文档,官方文档写的也就那样。一天下来就刷了这么一道简单题。

题目:交换后字典序最小的字符串

题目链接

给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的字典序最小的字符串。

如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5 和 9、2 和 4 奇偶性相同,而 6 和 9 奇偶性不同。

class Solution {func getSmallestString(s: String): String {var arr = Array(s)	// Array<UInt8>var 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 = Array<Rune>(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)初始化。然后又是类型错误,这种方式只支持Array<Rune>类型.

总之,这道题就是各种乱七八糟的格式转换。总结如下:

  • 先拿到一个可修改的数组, arr = Array(s),类型为Array<UInt8>
  • 拿到字符’0’的Unicode值:构建字符串 zero=“0”,那么得到其Unicode值为 zero[0]
  • 拿到字符的数字值:arr[i] - zero[0]
  • 做处理
  • 拿到一个 Array<Rune>类型的数组 res
  • 把 arr里面的东西腾到 res里面
  • String(res)即可
http://www.lryc.cn/news/474821.html

相关文章:

  • SpringBoot【实用篇】- 配置高级
  • liunx CentOs7安装MQTT服务器(mosquitto)
  • 【银河麒麟高级服务器操作系统】虚拟机lvm分区丢失现象分析及解决建议
  • Android 原子性类型都有哪些
  • MySQL(上)
  • ffplay 实现视频流中音频的延迟
  • CSDN资源变现
  • Rembg模型构建教程
  • 向量的基础知识和矩阵向量的坐标旋转
  • GeoSever发布图层(保姆姬)
  • AI 大模型的发展趋势是怎样的?
  • win10怎么关掉自动更新-小白必看
  • 大学城水电资源管理:Spring Boot解决方案
  • 躺平成长-运营日记-第三天
  • 智慧税务管理:金融企业报税效率与合规性提升
  • linux之网络子系统-用户层接收数据包之同步阻塞方案
  • 【天线&空中农业】花生霉变检测系统源码&数据集全套:改进yolo11-LVMB
  • 全志A133 android10 LVDS幅值调节
  • 弃用 RestTemplate,来了解一下官方推荐的 WebClient !
  • 西圣、倍思、品胜电容笔孰强孰弱?多维度对比测评三款平替电容笔
  • VS2022配置调试Qt源代码
  • Python 的 Pygame 库来开发一个游戏
  • diffusion model 学习笔记
  • 【C++题解】1967. 输出字符的ascii码
  • Java入门9——类和对象+this+构造方法
  • Django目录结构最佳实践
  • npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
  • 后端:Spring、Spring Boot-实例化Bean依赖注入(DI)
  • C++ 数据结构 静态顺序表、动态顺序表。
  • QML旋转选择器组件Tumbler