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

2024-11-29:替换字符可以得到的最晚时间。用go语言,给定一个字符串 s,其中包含一个12小时制的时间格式,部分数字可能

2024-11-29:替换字符可以得到的最晚时间。用go语言,给定一个字符串 s,其中包含一个12小时制的时间格式,部分数字可能被"?"替换。

将 s 中的问号替换为数字,使得结果字符串表示的时间是一个有效的12小时制时间,并且是可能的最晚时间。

返回替换后的结果字符串。

输入:s = "1?:?4"。

输出:"11:54"。

解释:通过替换 "?" 字符,可以得到的最晚12小时制时间是 "11:54"。

答案2024-11-28:

chatgpt[1]

题目来自leetcode3114。

大体步骤如下:

1.将输入的时间字符串转换为字节数组并存储在变量 t 中。

2.检查第一个小时位,如果是问号,则根据下一位数字的情况确定替换为 '1' 还是 '0'。

3.检查第二个小时位,如果是问号且第一个小时位是 '1',则替换为 '1';否则替换为 '9'。

4.检查分钟的第一位,如果是问号,则替换为 '5'。

5.检查分钟的第二位,如果是问号,则替换为 '9'。

6.将经过替换后的字节数组转换为字符串并返回作为结果。

总的时间复杂度为 O(1),因为不论输入的时间是什么,操作步骤都是固定的,所需的时间是固定的。

总的额外空间复杂度为 O(1),因为只使用了固定大小的变量和常量存储空间。

Go完整代码如下:

package main

import(

"fmt"

)

func findLatestTime(s string)string{

t :=[]byte(s)

if t[0]=='?'{

if t[1]=='?'|| t[1]<='1'{

t[0]='1'

}else{

t[0]='0'

}

}

if t[1]=='?'{

if t[0]=='1'{

t[1]='1'

}else{

t[1]='9'

}

}

if t[3]=='?'{

t[3]='5'

}

if t[4]=='?'{

t[4]='9'

}

returnstring(t)

}

func main(){

s :="1?:?4"

fmt.Println(findLatestTime(s))

}

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

fn find_latest_time(s:&str)->String{

letmut t:Vec<char>= s.chars().collect();

if t[0]=='?'{

if t[1]=='?'|| t[1]<='1'{

t[0]='1';

}else{

t[0]='0';

}

}

if t[1]=='?'{

if t[0]=='1'{

t[1]='1';

}else{

t[1]='9';

}

}

if t[3]=='?'{

t[3]='5';

}

if t[4]=='?'{

t[4]='9';

}

t.iter().collect()

}

fnmain(){

lets="1?:?4";

println!("{}",find_latest_time(s));

}

在这里插入图片描述引用链接

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

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券