牛客网字节跳动——修改拼写错误

 
package com.test;
/**
 * 链接:https://www.nowcoder.com/questionTerminal/42852fd7045c442192fa89404ab42e92?f=discussion
 * 来源:牛客网
 *
 * Question:
 * 1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello
 * 2. 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello
 * 3. 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC
 *
 *
 * 输入:
 * 2
 * hellllo
 * woooow
 *
 * 输出:
 * hello
 * woow
 *
 *
 * Dtae:2020-3-24 21:42:00
 */


import java.util.Scanner;

public class test2 {
    public String[] repair(String[] strlist,int length){
        String[] resultlist=new String[length];
        for(int i=0;i<length;i++){
            String str=strlist[i];
            int state=0; //初始状态0
            char cur;    //当前字符串
            char last=str.charAt(0);  //初始化第一个字符串
            String ans="";   //连接处理后的字符
            ans+=last;      //初始化

            for(int j=1;j<str.length();++j) {
                cur = str.charAt(j);
                switch (state) {
                    case 0: {
                        if (cur == last) {
                            state = 1;   //AA情况
                        } else {
                            state = 0;
                        }
                        break;
                    }
                    case 1: {
                        if (cur == last) {
                            continue;   //AAA情况
                        } else {
                            state = 2;
                            //AAB情况
                        }
                        break;

                    }
                    case 2: {
                        if (cur == last) {
                            continue;
                        } else {
                            state = 0;

                        }
                        break;
                    }
                    default:
                        break;
                }
                ans = ans + cur;
                last = cur;
            }
            resultlist[i]=ans;
        }
        return resultlist;
    }


    public static  void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        String[] strlist=new String[n];
        for(int i=0;i<n;i++){
            strlist[i]=scanner.next();
        }

        test2 t=new test2();
        String[] resultList=t.repair(strlist,n);
        for(int i=0;i<n;i++){
            System.out.println(resultList[i]);
        }
    }

}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值