洛谷 CF1570E 题解
题目传送门
题意:
用 Kotlin 编程,给定一个 字符串 ,它只包含 或 ,求最少删掉多少个 使它变成连续 的字符串。
思路:
可以用类似双指针的做法,分别从字符串开头和结尾遍历,找到第一个是 的字符就结束循环并记录循环变量(假设 和 ),最后从 到 遍历,如果是 计数器就累加,最后输出答案。
C++ code:
#include <bits/stdc++.h>
using namespace std;
int n,cnt;
string st;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cnt=0; //切记初始化!!
cin>>st;
int f=0,r=-1;
int len=st.length();
for(int i=0;i<len;i++){
if(st[i]=='1'){
f=i;break;
}
}
for(int i=len-1;i>=0;i--){
if(st[i]=='1'){
r=i;break;
}
}
for(int i=f;i<=r;i++)
if(st[i]=='0') cnt+=1;
cout<<cnt<<endl;
}
return 0;
}
Kotlin code:
import java.util.Scanner
fun main(){
val read=Scanner(System.`in`)
var n=read.nextInt()
var s=read.nextLine()
for(i in 1..n){
var st=read.nextLine()
var f:Int=0
var r:Int=-1
var len:Int=st.length
var cnt:Int=0
for(i in 0..len-1)
if(st[i]=='1'){
f=i
break
}
for(i in len-1 downTo 0)
if(st[i]=='1'){
r=i
break
}
for(i in f..r)
if(st[i]=='0') cnt=cnt+1
println(cnt)
}
}
本文来自博客园,作者:Black--Panda,转载请注明原文链接:https://www.cnblogs.com/liu-black/p/cf1570e-tijie.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现