字节跳动面试题:万万没想到之聪明的编辑

题目要求
1.
万万没想到之聪明的编辑
我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:

  1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello
  2. 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello
  3. 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC

我特喵是个天才!我在蓝翔学过挖掘机和程序设计,按照这个原理写了一个自动校对器,工作效率从此起飞。用不了多久,我就会出任CEO,当上董事长,迎娶白富美,走上人生巅峰,想想都有点小激动呢!
……
万万没想到,我被开除了,临走时老板对我说: “做人做事要兢兢业业、勤勤恳恳、本本分分,人要是行,干一行行一行。一行行行行行;要是不行,干一行不行一行,一行不行行行不行。” 我现在整个人红红火火恍恍惚惚的……

请听题:请实现大锤的自动校对程序
在这里插入图片描述
在这里插入图片描述
解答

package com.shiyi.controller;

import org.apache.commons.lang3.StringUtils;
import java.util.Scanner;

public class ArrayListHashMap<K,V> {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int n = scanner.nextInt();
        while (scanner.hasNextLine()) { // 注意 while 处理多个 case
            String inputStr = scanner.nextLine();
            if (StringUtils.isEmpty(inputStr)){
                continue;
            }
            String strAfterEdit = editStr(inputStr);
            System.out.println(strAfterEdit);
        }
    }

    private static String editStr(String inputStr) {
        //三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello
        String tripledCharFixedStr = fixTripleChar(inputStr);
        //两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello
        //上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC
        return fixRepeatChar(tripledCharFixedStr);
    }

    private static String fixTripleChar(String inputStr) {
        StringBuilder result = new StringBuilder();
        result.append(inputStr.charAt(0));
        result.append(inputStr.charAt(1));
        for (int i = 2; i < inputStr.length(); i++) {
            char currentChar = inputStr.charAt(i);
            if (!(inputStr.charAt(i - 2) == inputStr.charAt(i - 1) && inputStr.charAt(i - 1) == currentChar)) {
                result.append(inputStr.charAt(i));
            }
        }
        return result.toString();
    }

    //两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello
    //上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC
    private static String fixRepeatChar(String text) {
        StringBuilder result = new StringBuilder();
        result.append(text.charAt(0));
        result.append(text.charAt(1));
        result.append(text.charAt(2));
        for (int i = 3; i < text.length(); i++) {
            char currentChar = text.charAt(i);
            if (!(text.charAt(i - 3) == text.charAt(i - 2) && text.charAt(i - 1) == currentChar)) {
                result.append(text.charAt(i));
            }
        }
        return result.toString();
    }


}
  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QSS(Qt Style Sheets)是用于控制Qt应用程序外观的样式表语言,Qt Style Sheet Editor是Qt Creator集成开发环境中的一种可视化样式表编辑器,可以用来创建和编辑QSS文件,并在实时预览中查看更改的效果。如果编辑器中预览无法生效,有可能是以下原因造成的: 1.样式表文件错误:QSS使用CSS语法,在书写样式表时需要遵循CSS语法的规范。如果样式表文件书写有误,将会影响预览效果。这时需要仔细检查样式表文件中的语法错误,确保样式表书写规范,没有语法错误。 2.控件命名错误:当您在样式表文件中使用控件名称时,名称必须正确,且与实际Qt应用程序中的控件名称匹配,否则样式表将不会应用到控件上。在这种情况下,需要确保控件命名一致,且与样式表文件中的名称相同。 3.样式表文件未加载:有时候样式表文件可能并没有正确加载,这种情况可能是由于许多原因造成的,如文件路径错误、文件名错误等等。这时需要仔细检查文件路径和文件名,确保文件能够正确地加载到应用程序中。 4.其他因素:其他因素可能会造成样式表在预览中无法正确应用,如软件版本不兼容、系统设置不正确等等。需要详细了解应用程序、开发环境和系统设置,并排除其他因素造成的问题。 总之,如果QSS样式表在编辑器预览中没有生效,最好从样式表本身、控件名称、加载路径和其他因素等各个方面进行仔细检查,以确定问题所在并解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值