美文网首页
字节跳动2019春招-万万没想到之聪明的编辑

字节跳动2019春招-万万没想到之聪明的编辑

作者: bangbang2 | 来源:发表于2020-07-12 16:14 被阅读0次
image.png
image.png
基本思路:思路比较简单,其实就是暴力破解
1:处理多行输入,题目已经告诉有n行数据,可以利用for循环来读取数据,如果没有告诉n行数据,可以利用while(sc.hasnext)来读取数据
2:定义一个StringBuilder来存放结果的字符串,也可以用Queue或其他数据结构
3:遍历字符串的每一个字符,分多种情况来具体讨论
(1)如果j>=2,且当前字符等于StringBuilder的倒数第一个字符和倒数第二个字符,就continue,不执行sb.append(s.charAt(j));,这是为了解决三个字符连在一起的情况
注意:在比较时,不能直接用s.charAt(j)==s.charAt(j-1)&&s.charAt(j)==s.charAt(j-2)
原因:如果对单独的AAA,或AABB类型的情况,影响并不大,但一旦遇到AABBCC情况就不一样了,如果用上述的写法,会造成AABC的情况,不能在原字符串的基础上比较,因为一旦发生变化,需要在新的字符串来比较,不然会出现重复的情况
参考代码

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main{
    public static void main(String [] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        
        for(int i=0;i<n;i++) {
            StringBuilder sb=new StringBuilder();
            String s=sc.next();
            for(int j=0;j<s.length();j++) {
    //比较AAA情况       if(j>=2&&s.charAt(j)==sb.charAt(sb.length()-1)&&s.charAt(j)==sb.charAt(sb.length()-2)) {    
                continue;   //结束当前循环,不去执行sb.append(s.charAt(j))这一句  
            }
            else //比较AABB情况
if(j>=3&&s.charAt(j)==sb.charAt(sb.length()-1)&&sb.charAt(sb.length()-2)==sb.charAt(sb.length()-3)) {
                                continue;   
            }
            else
                sb.append(s.charAt(j));
        }
            System.out.println(sb.toString());
        }       
    }

}

结果:


image.png

相关文章

网友评论

      本文标题:字节跳动2019春招-万万没想到之聪明的编辑

      本文链接:https://www.haomeiwen.com/subject/hzagcktx.html