我是靠谱客的博主 眯眯眼小甜瓜,最近开发中收集的这篇文章主要介绍华为机试(字符串消消乐---Java实现),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

package test;

import java.util.Scanner;

/**
 * 消消乐(字符串)
 * 描述
 * 给定一个只包含大小写字母的字符串(大小写敏感),若相邻两个元素相等则消除,直到最后字符串消除不了了,输出消消乐后字符串的长度,若遇到非大小写字母以外的字符,则输出0。
 * 示例
 * 输入:mMbccbc
 * 输出:3
 * 解释:cc消掉,然后bb消掉,最后剩余mMc,输出长度3
 */
public class TestProject {
    public static void main(String[] args) {
        /*
        思路:
        1.字符串长度为n就要比较n-1次
        2.相邻元素  i和i+1   charAt(),如果相等就把这两个字符添加到StringBuffer里面
        3.将原字符串中StringBuffer的内容替换为""
        4.将替换后的内容赋值给原字符串
        5.对于i,归0重新循环(第二次不会比较前两个字符因此先判断前两个字符是否相等,相等的话用字符串截取即可)
        6.清空StringBuffer里面的内容
         */
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        StringBuffer stringBuffer = new StringBuffer();
        if (s != null && s.length() > 0) {
            for (int i = 0; i < s.length() - 1; i++) {
                //如果字符串是loolmnihao,为了使得第二次能检测到ll所以得加这步
                //第二次不会比较前两个字符因此先判断前两个字符是否相等,相等的话用字符串截取即可
                if (s.charAt(0) == s.charAt(1)) {
                    s = s.substring(2);
                }
                if (s.length() > 2) {
                    if (s.charAt(i) == s.charAt(i + 1)) {
                        stringBuffer.append(s.charAt(i));
                        stringBuffer.append(s.charAt(i + 1));
                        String replace = s.replace(stringBuffer.toString(), "");
                        s = replace;
                        i = 0;
                        //清空stringbuffer
                        stringBuffer.delete(0, stringBuffer.length());
                    }
                }
            }
        }
        //System.out.println(s);
        System.out.println(s.length());
    }
}

最后

以上就是眯眯眼小甜瓜为你收集整理的华为机试(字符串消消乐---Java实现)的全部内容,希望文章能够帮你解决华为机试(字符串消消乐---Java实现)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部