• 万万没想到之聪明的编辑


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

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

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

    请听题:请实现大锤的自动校对程序
    输入描述:
    第一行包括一个数字N,表示本次用例包括多少个待校验的字符串。

    后面跟随N行,每行为一个待校验的字符串。

    输出描述:
    N行,每行包括一个被修复后的字符串。

    输入例子1:
    2
    helloo
    wooooooow

    输出例子1:
    hello
    woow
    ------------------------------------------------代码---------------------------------------

    import java.util.*;

    public class Main {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

        while (scanner.hasNext()) {
            Integer n = scanner.nextInt();
            String[] s = new String[n];
    
            for (int i = 0; i < n; i++) {
                s[i] = scanner.next();
            }
    
            for (int i = 0; i < n; i++) {
                String result = helllo(s[i]);
                result = AABB(result);
                System.out.println(result);
            }
        }
    }
    
    
    static String helllo(String s) {
        char[] chars = s.toCharArray();
        StringBuffer sb = new StringBuffer();
    
        for (int i = 0; i < chars.length; i++) {
            if (chars.length - i < 3) {
                sb.append(chars[i]);
            } else {
                if (chars[i] == chars[i + 1] && chars[i] == chars[i + 2]) {
                    sb.append(chars[i + 1]);
                    sb.append(chars[i + 2]);
                    i = i + 2;
                } else {
                    sb.append(chars[i]);
                }
            }
        }
    
        if (!s.equals(sb.toString())) {
            return helllo(sb.toString());
        } else {
            return sb.toString();
        }
    }
    
    static String AABB(String s) {
    
        char[] chars = s.toCharArray();
        StringBuilder sb = new StringBuilder();
    
        for (int i = 0; i < chars.length; i++) {
            if (chars.length - i < 4) {
                sb.append(chars[i]);
            } else {
                if (chars[i] == chars[i + 1] && chars[i + 2] == chars[i + 3]) {
                    sb.append(chars[i]);
                    sb.append(chars[i + 1]);
                    sb.append(chars[i + 2]);
                    i = i + 3;
                } else {
                    sb.append(chars[i]);
                }
            }
        }
    
        if (!s.equals(sb.toString())) {
            return AABB(sb.toString());
        } else {
            return sb.toString();
        }
    }
    

    }

  • 相关阅读:
    Java实现 LeetCode 802 找到最终的安全状态 (DFS)
    Java实现 LeetCode 802 找到最终的安全状态 (DFS)
    Java实现 LeetCode 802 找到最终的安全状态 (DFS)
    Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
    Java实现 LeetCode 803 打砖块 (DFS)
    Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
    Java实现 LeetCode 803 打砖块 (DFS)
    Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
    英文标点
    post sharp 与log4net 结合使用,含执行源码 转拷
  • 原文地址:https://www.cnblogs.com/zjf1987/p/12580207.html
Copyright © 2020-2023  润新知