• 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. 结语

      努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!

      如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。

    但行好事 莫问前程
  • 相关阅读:
    开发笔记-图片拉伸保持不变形
    开发笔记-简单渐变动画的实现
    开发笔记- iOS监听某些事件的方法简单梳理
    开发笔记-UIApplication代理
    开发笔记-UIApplication单例
    常见的UNIX命令
    知识点回顾-简单的TableView单组数据展示/多组数据展示
    开发技巧-改变按钮属性3部曲
    字典--plist
    如何使用JS实现页面内容随机显示
  • 原文地址:https://www.cnblogs.com/haifwu/p/15017553.html
Copyright © 2020-2023  润新知