ASCII码在算法题中的两个小妙用:转换字母大小写 与 转换整数字符String/Number类型(JavaScript/Python描述)

6 篇文章 0 订阅
3 篇文章 0 订阅

最少必要知识

  • ‘0’ 对应的ASCII码是 48
  • ‘A’ 对应的ASCII码是 65
  • 'a‘ 对应的ASCII码是 97

这也是 JavaScript 中 'a' > 'A'true 的原因。


转换字母大小写

假设做如下规定

  • 参数letter: 为单个英文字母字符;
  • 参数 mode :小写换大写为 1;大写换小写为 -1。

JavaScript:

const toUpperOrLowerClass = (letter, mode) => {
  const charCodeOfTheLetter = letter.charCodeAt() + ('A'.charCodeAt() - 'a'.charCodeAt()) * mode
  const upperClassedLetter = String.fromCharCode(charCodeOfTheLetter)
  return upperClassedLetter
}

console.log(toUpperOrLowerClass('a', 1))
console.log(toUpperOrLowerClass('A', -1))

Python:

def toUpperOrLowerClass(letter, mode):
    charCodeOfLetter = ord(letter) + (ord('A') - ord('a')) * mode
    return chr(charCodeOfLetter)

print toUpperOrLowerClass('a', 1)
print toUpperOrLowerClass('A', -1)

关键就是 ord(letter) + (ord('A') - ord('a')) 这一步。


转换整数字符String/Number类型

假设规定参数是 0 - 9 的单数整数字符串,如 ‘9’、‘7’。

JavaScript

const strToNum = (str) => (str.charCodeAt() - '0'.charCodeAt())

python

def strToNum(str):
    return ord(str) - ord('0')

对于非个位数的整数字符串,只需要类似 number = number * 10 + itemNum 这样,个位、十位、百位一次处理就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值