2022-10-17:特殊的二进制序列是具有以下两个性质的二进制序列:
0 的数量与 1 的数量相等。
二进制序列的每一个前缀码中 1 的数量要大于等于 0 的数量。
给定一个特殊的二进制序列 S,以字符串形式表示。
定义一个操作 为首先选择 S 的两个连续且非空的特殊的子串,然后将它们交换。
(两个子串为连续的当且仅当第一个子串的最后一个字符恰好为第二个子串的第一个字符的前一个字符)
在任意次数的操作之后,交换后的字符串按照字典序排列的最大的结果是什么?
输入: S = “11011000”。
输出: “11100100”。

答案2022-10-17:

1认为是左括号,0认为是右括号。嵌套递归模型。两两交换,其本质是冒泡排序。
力扣761。经测试,rust和go的速度最快,go的内存占用最低。

代码用rust编写。代码如下:

impl Solution {
pub fn make_largest_special(s: String) -> String {
let mut arr: Vec<String> = vec![];
// 主!
let mut index = 0;
while index < s.len() as i32 {
let info = Solution::process(&s, index + 1);
arr.push(info.ans);
index = info.end + 1;
}
let mut builder = String::from("");
arr.sort_by(|a, b| b.cmp(a));
for cur in arr.iter() {
builder.push_str(cur);
}
return builder;
}
// process(i)
fn process(s: &str, mut index: i32) -> Info {
let mut arr: Vec<String> = vec![];
// index 不能是 ) -> 0
let bytes = s.as_bytes(); while bytes[index as usize] != '0' as u8 {
// index ( -> 1
let info = Solution::process(s, index + 1);
arr.push(info.ans);
index = info.end + 1;
}
let mut builder = String::from("");
arr.sort_by(|a, b| b.cmp(a));
for cur in arr.iter() {
builder.push_str(cur);
}
return Info::new(&(String::from("") + "1" + &builder + "0"), index);
}
} struct Info {
ans: String,
end: i32,
} impl Info {
fn new(a: &str, e: i32) -> Self {
Self {
ans: String::from(a),
end: e,
}
}
} fn main() {
let ans = Solution::make_largest_special(String::from("11011000"));
println!("ans = {:?}", ans);
} struct Solution {}

执行结果如下:



左神java代码

2022-10-17:特殊的二进制序列是具有以下两个性质的二进制序列: 0 的数量与 1 的数量相等。 二进制序列的每一个前缀码中 1 的数量要大于等于 0 的数量。 给定一个特殊的二进制序列 S,以的更多相关文章

  1. 请编写一个方法,返回某集合的所有非空子集。 给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序,见样例。

    题解:观察测试样例,会发现每个子集的选择规律与二进制((2^n) - 1)到 1 的顺序生成的规律是一致的,样例中n=3,2^n-1=7,用二进制表示为111,其中每一位的1表示数组中的三个数都选择. ...

  2. py-统计一个矩阵中每一列的非0数的个数

    1.文件类型类似于这样: 不过数据量比这个要更大一点. 2.对应上述数据的运行结果: import matplotlib.pyplot as plt with open('test.txt') as ...

  3. 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。 给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。

    // 第一种方法 // ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include < ...

  4. 2020.10.17 JZOJ 提高B组T2 导弹拦截

    2020.10.17 JZOJ 提高B组T2 导弹拦截 题目 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统. 敌国的导弹形成了立体打击,每个导弹可以抽象成一个三维空间中的 ...

  5. 【10.17校内测试】【二进制数位DP】【博弈论/预处理】【玄学(?)DP】

    Solution 几乎是秒想到的水题叻! 异或很容易想到每一位单独做贡献,所以我们需要统计的是区间内每一位上做的贡献,就是统计区间内每一位是1的数的数量. 所以就写数位dp辣!(昨天才做了数字统计不要 ...

  6. Gym 101064 D Black Hills golden jewels 【二分套二分/给定一个序列,从序列中任意取两个数形成一个和,两个数不可相同,要求求出第k小的组合】

    D. Black Hills golden jewels time limit per test 2 seconds memory limit per test 256 megabytes input ...

  7. 10.17(山东多校联合模拟赛 day1)

    山东多校联合模拟赛 day1 题不难 rect [问题描述] 给出圆周上的 N 个点, 请你计算出以这些点中的任意四个为四个角,能构成多少个矩形. 点的坐标是这样描述的, 给定一个数组 v[1..N] ...

  8. 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果)

    [源码下载] 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果) 作者:webabcd 介绍背水一战 Windows 10 之 动画 ThemeTrans ...

  9. 给定一个整数N,找出一个比N大且最接近N,但二进制权值与该整数相同 的数

    1,问题描述 给定一个整数N,该整数的二进制权值定义如下:将该整数N转化成二进制表示法,其中 1 的个数即为它的二进制权值. 比如:十进制数1717 的二进制表示为:0000 0110 1011 01 ...

  10. 给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?

    题目:给定一个函数rand()能产生1到n之间的等概率随机数,问如何产生1到m之间等概率的随机数? 先把问题特殊化,例如原题变为给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一 ...

随机推荐

  1. luac编译命令

    luac -o out.lua 1.lua 可以不要后缀 luac -o out 1.lua

  2. Linux shell字符操作总结

    各符号介绍 字符串长度统计 ${#string}: 字符串string的长度 字符串截取 ${string#*substring}: 从左到右截取特定字符substring第一次出现位置之后的字符串 ...

  3. 手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台

    摘要:本期文章采用了4G LTE Cat.1模块,编程语言用的是lua,实现对华为云物联网平台的设备通信与控制 本文分享自华为云社区<基于luatos的4G(LTE Cat.1)模组接入华为云物 ...

  4. 改进 hibernate-validator,新一代校验框架 validator 使用介绍 v0.4

    项目介绍 java 开发中,参数校验是非常常见的需求.但是 hibernate-validator 在使用过程中,依然会存在一些问题. validator 在 hibernate-validator ...

  5. java网络编程--3 TCP

    java网络编程--3 TCP 1.6.TCP 客户端 连接服务器 Socket 发送消息 package com.ssl.lesson02; import java.io.IOException; ...

  6. js函数防抖节流

    // 3.1 函数防抖: // 当持续触发事件时,一定时间段内没有再次触发事件,事件处理函数才会执行一次,如果设定时间到来之前,又触发了事件,就重新开始延时.// 也就是说当一个用户一直触发这个函数, ...

  7. .NET周报 【3月第4期 2023-03-24】

    国内文章 .NET应用系统的国际化-多语言翻译服务 https://www.cnblogs.com/tianqing/p/17232559.html 本文重点介绍了多语言翻译服务的设计和实现.文章描述 ...

  8. VUE-生命周期/请求数据

    使用方法 --- 4个before,4个ed,创造,装载,更新,销毁 初始化阶段 beforeCreate(){} // 准备怀孕 created(){} // 怀上了 *************** ...

  9. 集合-HashMap 源码详细分析(JDK1.8)

    1. 概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap.HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现.HashMap 允许 null 键和 null 值 ...

  10. CentOS 9 开局配置

    CentOS 9 开局配置 CentOS 9 发布有几年了,一直没有尝试使用,CentOS 9 有一些变动. 查看系统基础信息 # 查看系统基础信息 [root@chenby ~]# neofetch ...