字节聪明的编辑(Java)

我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:
 
1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello
2. 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello
3. 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC
public class SmartEditor {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        ArrayList<String> strs = new ArrayList<>();
        int n = scan.nextInt();
        for(int i = 0;i < n;i++){
            strs.add(scan.next());
        }
        for(String str : strs){
            System.out.println(SmartEditor(str));
        }


    }

    public static String SmartEditor(String str){
        int a = 0;
        int b = 1;
        int c = 2;
        int d = 3;
        if(str.length() == 3){
            if(str.charAt(a) == str.charAt(b) && str.charAt(a) == str.charAt(c)){
                return str.substring(0,c);
            }
            return str;
        }else if(str.length() < 3){
            return str;
        }
        while(true){
            if(str.charAt(a) == str.charAt(b) && str.charAt(a) == str.charAt(c)){
                str = str.substring(0,c) + str.substring(c+1);
            }else if(d < str.length() && str.charAt(a) == str.charAt(b) && str.charAt(c) == str.charAt(d)){
                str = str.substring(0,c) + str.substring(d);
            }else{
                a = b;
                b = c;
                c = d;
                d = d+1;
            }
            if(d > str.length()){
                break;
            }
        }
        return str;
    }
}

posted on 2021-10-16 17:16  Tianhao丶  阅读(29)  评论(0编辑  收藏  举报

导航