题目描述:
把相邻的相同的元素删去一个,例如11233,则输出123
样例输入:(第一行输入的是要测试的数据的组数,第二行是要输入的数据的长度,第三行是输入的数据)
1
5
1121
样例输出:
121
思路分析:
在这里插入代码片 这个题其实并不是太难的,首先定义一个n用来确定测试的数据的组数,然后用循环可以把长度给输出来
但是我感觉需要注意的是输入的数据是一个字符串类型的,这有这样才可以接收,不然你如果输入五个数
是中间是需要空格的,由于字符串不好处理,所以我们需要把他给转化为整形数组
难点就在于如何删除相邻的重复的元素,对于这个我们可以用我打注释的复杂的代码,也可以看后面的比较简单的代码
其大致的思路是先把第一个数给输出来,然后我们来遍历这个整形的数组,如果第二个数与第一个数是相同的话我们不做处理,继续往后面遍历,但是如果不相同的话我们需要把第二个数字给输出来,依次往下来进行,直到最后,这样就可以实现删除相邻的重数了。
代码如下:
package
删除重数;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner m=new Scanner(System.in);
int n=m.nextInt();
String str[]=new String[n];
for(int i=0;i<n;i++)
{
int count=m.nextInt();
str[i]=m.next();
int array[]=new int[count];
String str2[]=str[i].split("");
for(int k=0;k<str2.length;k++)
array[k]=Integer.parseInt(str2[k]);
operate(array);
// for(int h=0;h<array.length;h++)
// if(array[h]>=0)
// System.out.print(array[h]);
}
}
public static void operate(int[]
array) {
// for(int i=0;i<array.length-1;i++)
// {
// if(array[i]==array[i+1])
// {
// int number=i;
// for(int k=number;k<array.length-1;k++)
// array[k]=array[k+1];
// array[array.length-1]=-1;
// }dd
// }
//
// for(int k=0;k<array.length-1;k++)
// if(array[k]>0)
// {
// if(array[k]!=array[k+1])
// break;
// else
// operate(array);
// }
System.out.print(array[0]);
for(int i=0;i<array.length-1;i++)
{
if(array[i]!=array[i+1])
System.out.print(array[i+1]);
}
}
}
```