2022-05-05:给定一个正数num,要返回一个大于num的数,并且每一位和相邻位的数字不能相等. 返回达标的数字中,最小的那个。 来自微软。
2022-05-05:给定一个正数num,要返回一个大于num的数,并且每一位和相邻位的数字不能相等.
返回达标的数字中,最小的那个。
来自微软。
答案2022-05-05:
从左往右看,是否有相邻两位相同的数字。如果有,则低位加1,低位右边全变成0,递归。
代码用rust编写。代码如下:
fn main() {
let answer = near(766665);
println!("answer = {}", answer);
}
fn near(num: isize) -> isize {
// num = 174
// "0175"
// num = 899
// "0900"
// num = 999
// "01000"
let mut raw = format!("0{}", num + 1).chars().collect::<Vec<_>>();
process(&mut raw);
return raw.iter().collect::<String>().parse::<isize>().unwrap();
}
fn process(raw: &mut Vec<char>) {
for i in 1..raw.len() {
if raw[(i - 1) as usize] == raw[i as usize] {
add_one(raw, i as isize);
for j in i + 1..raw.len() {
raw[j as usize] = '0';
}
process(raw);
return;
}
}
}
// 99.....
// +1
//100
fn add_one(r: &mut Vec<char>, i: isize) {
let mut i: isize = i;
while r[i as usize] == '9' {
r[i as usize] = '0';
i -= 1;
}
r[i as usize] = (r[i as usize] as u8 + 1) as char;
}
执行结果如下:
公众号:福大大架构师每日一题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2021-05-05 2021-05-05:一个数组中只有两种字符‘G‘和‘B‘,可以让所有的G都放在左侧,所有的B都放在右侧。或者可以让所有的G都放在右侧,所有的B都放在左侧。但是只能在相邻字符之间进行交换操作。返回至少