360 ab串
1. 题目
小明得到一个只包含a,b两个字符的字符串,但是小明不希望在这个字符串里a出现在b左边。现在他可以将”ab”这样的子串替换成”bba”,在原串中的相对位置不变。输出小明最少需要操作多少次才能让一个给定字符串所有a都在b的右边。(牛客网:https://acm.nowcoder.com/questionTerminal/3d8b7e706ca9429eacd6c405713ba11d)。若有侵权,还请告知,立即撤回。
2. 输入输出描述
输入描述:一个只包含a,b两个字符的字符串,长度不超过100000。
输出描述:最小的操作次数。结果对1000000007取模。
3. 样例
样例1:
样例输入:ab 样例输出:1
解释:ab到bba
样例2:
样例输入:aab
样例输出:3
解释:aab到abba到bbaba到bbbbaa
4. 题解
其实这道题教会了我考虑的时候不要总是固执的从前往后考虑,可以扩展思维,从后往前考虑。
从后往前找,找a出现的位置,找到后,a往后移动,因为每移动一次都会制造出一个b,所以count*2。
5. 实现
public class n1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
int n = s.length();
long count = 0;
long ans = 0;
for(int i = n - 1; i >= 0; i--) {
if(s.charAt(i) == 'b') count++;
else {
ans = (ans + count) % 1000000007;
count = (count * 2) % 1000000007; // 不懂为什么要 * 2
}
}
System.out.println(ans);
}
}
6. 结语
努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!
如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。
但行好事 莫问前程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人