鸡鸭分类问题

2019年招商信用卡中心笔试的编程第一题,当时还没想好这个问题,后来才想到了。

鸡鸭分类问题

题目

大致问题就是:鸡鸭不能串这挨着。鸡用C表示,鸭用D表示。例如:CCDCC->CCCDC->CCCCD这样就能使之前的两处鸡鸭相邻变为一处鸡鸭相邻,需要调整队形两次。

示例

输入描述:输入一个长度为N,且只包含C和D的非空字符串。

输入:CCDCC

输出描述:使得最后仅有一对鸡鸭相邻,最少的交换次数。

输出:2

解释思想:

  • 把第一个字母记录下来,然后统计和第一字母相同的字母前面有几个不同的字母,然后把每次的数字加起来就可以了。
image.png
package com.zhoujian.solutions.didi;
import java.util.Scanner;
/**
 * @author zhoujian123@hotmail.com 2018/8/30 20:20
 */
public class Main1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        char[] array = s.toCharArray();
        int n = steps(array);
        System.out.println(n);
    }

    private static int steps(char[] array) {
        if (array == null) {
            return 0;
        }
        int[] tmpArr = new int[array.length];
        int tmpNum = 0;
        int min = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i] != array[0]) {
                tmpNum++;
            }
            if (array[i] == array[0]) {
                tmpArr[i]=tmpNum;
            }
        }
        for (int i: tmpArr) {
            min +=i;
        }
        return min;
    }
}

结果如下:

image.png

时间复杂度为O(n)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 10,050评论 0 5
  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 14,605评论 0 25
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,208评论 0 2
  • 姓名:李格 公司:海南蔚蓝时代实业有限公司 组别:第420期乐观4组 【日精进打卡第172天】 【知~学习】 背诵...
    熊猫酱panda阅读 1,702评论 0 0
  • “停止答题,请考生放下……”此刻,又一次高考结束!还记得当年此刻你的心情吗?再见了“属于我”的那张书桌!再见了同学...
    不正常生物研究中心阅读 1,279评论 0 14

友情链接更多精彩内容