首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2024-06-12:用go语言,给定一个下标从 0 开始的字符串 `s`,其中包含用户的输入。 所谓按键变更是指按下与上次按下

2024-06-12:用go语言,给定一个下标从 0 开始的字符串s,其中包含用户的输入。

所谓按键变更是指按下与上次按下的键不同的键。

举例来说,如果s = "ab",表示发生了一次按键变更;

而对于s = "bBBb",则没有发生按键变更。

要求计算用户输入过程中按键发生变更的次数。

需要注意的是,shift 键或 caps lock 键等修饰键不算作按键变更。

换句话说,如果用户先按下字母 'a',然后再按下字母 'A',不算作按键变更。

输入:s = "aAbBcC"。

输出:2。

答案2024-06-12:

chatgpt

题目来自leetcode3019。

大体步骤如下:

1.定义countKeyChanges函数,该函数接受一个字符串s作为输入,并返回按键发生变更的次数。初始化ans为 0,用于记录变更次数。

2.在main函数中,定义字符串s为 "aAbBcC"。这个字符串代表了用户的输入序列。

3.在countKeyChanges函数中,使用循环遍历字符串s。从下标 1 开始,逐个比较前一个字符和当前字符是否属于不同的键。

4.对于每个索引i,如果该索引的字符(s[i])和前一个字符(s[i-1])不属于相同的字符(在按大写转为小写后比较),则将变更次数ans增加 1。

5.返回变更次数ans。

总的时间复杂度:

• 遍历字符串s需要 O(n) 的时间复杂度,其中n为字符串的长度。

总的额外空间复杂度:

• 在该算法中,除了函数返回值之外,并没有使用额外的空间来存储数据。因此,额外空间复杂度为 O(1)。

Go完整代码如下:

package main

import "fmt"

func countKeyChanges(s string) (ans int) {

for i := 1; i < len(s); i++ {

if s[i-1]&31 != s[i]&31 {

ans++

}

}

return

}

func main() {

s:= "aAbBcC"

fmt.Println(countKeyChanges(s))

}

在这里插入图片描述Python完整代码如下:

# -*-coding:utf-8-*-

def count_key_changes(s):

ans = 0

for i in range(1, len(s)):

if ord(s[i - 1]) & 31 != ord(s[i]) & 31:

ans += 1

return ans

def main():

s = "aAbBcC"

print(count_key_changes(s))

if __name__ == "__main__":

main()

在这里插入图片描述

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Oa9NNPS9avleCPIHnwiQ6m8w0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券