• Red And Green


    #include <stdio.h>
    #include <string.h>
    
    #define LENGTH 50
    
    /*
     * 1.字符序列中有一个字符肯定是分界点,它的左边全为红色,右边全为绿色
     * 2.因此  该点的左边的绿色要翻转为红色  该点右边的红色要翻转成绿色
     * 3.统计每个点需要翻转的次数  从中找出最小的次数即为答案
     * */
    
    int main() {
        char brick[LENGTH];
        int len;
        scanf("%s", brick);
        len = strlen(brick);
        int leftGreen[LENGTH] = {0};
        int rigthRed[LENGTH] = {0};
    
        for (int i = 1; i < len; ++i) {
            leftGreen[i] = leftGreen[i - 1] + (brick[i - 1] == 'G' ? 1 : 0);
        }
        for (int j = len - 2; j >= 0; --j) {
            rigthRed[j] = rigthRed[j + 1] + (brick[j + 1] == 'R' ? 1 : 0);
        }
        int res = len;
        for (int k = 0; k < len; ++k) {
            res = (res > (leftGreen[k] + rigthRed[k]) ? (leftGreen[k] + rigthRed[k]) : res);
        }
    
        printf("%d",res);
    }
  • 相关阅读:
    【javascript】select操作实例
    【javascript】函数
    【javascript】一些资料
    【javascript】操作符:一元操作符
    动态执行Sql
    索引( index )
    事务
    用户相关
    视图(view)
    函数(function)
  • 原文地址:https://www.cnblogs.com/ustc-anmin/p/11662689.html
Copyright © 2020-2023  润新知