题目
具体题目是不记得很清楚
大体上是:
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++;
}
}
}
结果
和预期结果一样,但是不保证所有情况通过