字节跳动2019春招第二题--AAA/AABB 格式修正

题目

具体题目是不记得很清楚
大体上是:
1.当出现AAA 时,将其转换为AA输出
2.AABB 时,将其转化为 AAB 输出

思路

//定义快慢指针
// slow,fast,定义测试指针 test
//fast 在slow之前一位,如果index[fast]=index[slow] 。test==fast+1 查看下一位是否与fast相同
//如果相同,将slow的位置置位空,slow与fast都向后移动
//test与fast不相同 ,则将 slow与fast都向前移动2位如果fast的值等于slow 说明是AABB ,则将slow置位空
//或者置位 9999;

代码

/**
 * 
 */

/***
 * @author 18071
 * @Date 2019年3月18日
 * 功能:
 ***/
public class test2 {

	 public static void main(String args[]) {
		 solution1 s =new solution1 ();
		 int [] x = {1,1,1,2,2,3,3};
		 
		 s.so(x);
		 for(int i=0;i<x.length;i++) {
			 if(x[i]<9999) {
				 System.out.println(x[i]);
			 }
		 }
	 }
}
class solution1 {
	public void so (int [] index) {
		
		//定义快慢指针
		// slow,fast,定义测试指针 test
		//fast 在slow之前一位,如果index[fast]==index[slow] 则fast向后以,test==fast+1 查看下一位是否与fast相同
		//如果相同,将slow的位置置位空,slow与fast都向后移动
		//test与fast不相同 ,则将 slow与fast都向前移动2位如果fast的值等于slow 说明是AABB ,则将slow置位空
		//或者置位 9999;
		int fast=1;
		int slow =0;
		
		while(fast<index.length-1) {
			
			
			if(index[fast]==index[slow]) {
				int text = fast+1;
				if(text < index.length) {//没有到达末尾
					if(index[text]==index[fast]) {
					    //情况1: 三个连着的相等
						index[slow]=9999;
//						slow++;
//						fast++;
						//break;
						
					}
			       if(index[text]!=index[fast]) {
			    	   //判断AABB
			    	   if(fast+2<index.length) {
			    		   fast=fast+2;
			    		   slow=slow+2;
                           if(index[slow]==index[fast])	{		    		   
                        	 index[slow]=9999;
                        	 
                        	 
                           }
                           
                          
			    		   
			    	   }
			       }
				}
				
			}
			slow++;
        	fast++; 
		}
		
	}
}

结果

在这里插入图片描述
和预期结果一样,但是不保证所有情况通过
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值