62,628
社区成员
发帖
与我相关
我的任务
分享
int []num = new int []{3,3,3,7,7,7,9,8,2,2,7,7,3,3,0,8};
int length = num.length;
int i,j;
int index = 0;
for(i=1;i<length;i++)
{
for(j=0;j<=index;j++)
{
if(num[i] == num[j]) break; //如果与已筛选出的数相同,则进行下一个数的判断
if(j == index) // j == index 判断完毕,没有相同的,将其添加到下一位
{
num[++index] = num[i];
}
}
}
num[++index]='\0'; //全部筛选完毕后,为筛选数组添加结束符
for(i=0;i<index;i++)
System.out.println(num[i]);
“我目前的思路是从第0个数开始,ints【0】跟后面每一个数字比较,不一样的就跟在ints【0】后面。”
你的意思是:不一样的字符就留下来,对吧?这本身就是题目的要求啊,是目的,而不是思路和方法……
我认为好点的思路是:
利用for循环遍历每一个元素,从nts【0】开始跟后面的数作比较,相反,只要遇到有相同的数字,就break,无须在比较了,接着下一个数。如果当前数和后面的所有数都比较了,没有发现相同的数,就输出。程序段如下:
package biaozhun;
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
Scanner s=new Scanner(System.in); //获取键盘里面输入的字符串
System.out.println("请输入字符串");
String sr=s.nextLine();//把字符串整行取出
char ch[]=sr.toCharArray();//把字符串放入数ch【】中
int j=0;//初始化j
boolean b=false;
for(;j<=ch.length-2;j++){
for(int i=j+1;i<=ch.length-1;i++){
if(ch[j]==ch[i]){
b=false;
break;//遇到相同字符,立即结束循环,进入下一个数的检验
}
b=true;
}
if(b==true){
System.out.print(ch[j]);
}
}
if(j==ch.length-1){
System.out.print(ch[ch.length-1]);//输出最后一个数字(最后的数字因为不需要比较,所以无法被for嵌套输出)
}
}
}
这是完整程序,我测试过了,可以运行,你可以试一下(只是不清楚我程序里面是否存在楼主声明不能用的方法)…………
int[] num = {3,3,3,7,7,7,9,8,2,2,7,7,3,3,0,8};
int[] result = new int[num.length];
int n=0;
for(int i=0;i<num.length;i++)
{
boolean flag = true;
if(i==0)
{
result[0] = num[0];
}
for(int j=0;j<n;j++)
{
if(num[i] == result[j])
{
flag = false;
break;
}
}
if(flag == true)
{
result[n++]=num[i];
System.out.print(num[i]+",");
}
}

/**
* 如下问题的解决方案: <br>
* 如题java数组类似 3337779822773308,希望输出379820.
* 但是解题过程不能出现list,iscontain,array.next等数组或其他自带的function。 就是完全只用普通的for,if语句来做。
* <ul>
* 参数类型:
* <li>整型</li>
* <li>字符串型</li>
* <li>整型数组</li>
* <li>字符数组</li>
* </ul>
* <ul>
* 返回值类型:
* <li>整型</li>
* </ul>
*
* @author Administrator
*
*/
public class Solution {
public int getNumber(int input) {
return getNumber(Integer.toString(input));
}
public int getNumber(String input) {
return getNumber(input.toCharArray());
}
public int getNumber(char[] input) {
int[] result = new int[input.length];
for (int i = 0; i < input.length; i++)
result[i] = Integer.parseInt(Character.toString(input[i]));
return getNumber(result);
}
/**
* 获取问题的结果
*
* @param input 输入的数
* @return 如题结果数
*/
public int getNumber(int[] input) {
boolean[] temp = new boolean[10];// 表示每个数字是否重复的临时标记
int index = 0;// 表示未重复的数的数量即生成新数的位数
// 遍历原数组
for (int i = 0; i < input.length; i++)
// 将出现过的数标记为重复
if (!temp[input[i]]) {
temp[input[i]] = true;
input[index] = input[i];// 由于当一个数重复出现时一定在这个数的后面,所以直接放入原数组的前面
index++;// 位数增加1
}
int result = 0;
// 生成新数
for (int i = 0; i < index; i++)
result += Math.pow(10, index - 1 - i) * input[i];
return result;
}
// Test
public static void main(String[] args) {
System.out.println(new Solution().getNumber("3337779822773308"));
}
}
输出结果:379820 String num="3333333333333qwerqwerqwqqqqqqqqqqqqqqqqqqqqqqqqq333333333333333332222222222222222111111111111111111113333333333333333333322222222222222222221111111111111111111";
for (int i = 0; i < num.length()-1; i++)
{
String value=num.substring(0,i+1);
String c=num.substring(i,i+1);
for (int j = i; j < num.length(); j++) {
String k=num.substring(j,j+1);
if(!c.equals(k)){
value+=k;
}
}
num=value;
}
System.out.println(num);
var array = "3337779822773308".split("");
var newNumber = [];
for(var i = 0;i<array.length;i++){
if(newNumber.indexOf(array[i]) == -1){
newNumber.push(array[i])
}
}
console.info(newNumber.join(""));
int[] loop = {3,3,3,7,7,7,9,8,2,2,7,7,3,3,0,8};
for (int i=0;i<loop.length;i++){
for(int j=0;j<i;j++){
if (loop[i] == loop[j]){
loop[i] = loop[0];
}
}
}
for (int i=0;i<loop.length;i++){
if(loop[i]==loop[0]){
if(i==0){
System.out.print(loop[0]);
}
}else{
System.out.print(loop[i]);
}
}
比较简单的思路是把所有跟以前出现过的数字全部改成数组的第一个值,然后打印的时候第一个值打印一边,别的要是碰到再跟第一个值一样的就跳过,这样连临时数组都不要建了
import java.util.HashSet;
import java.util.Set;
public class Ddq {
public static void main(String[] args) {
int i[] = {3, 3, 3, 7, 7, 7, 9, 8, 2 , 2, 7, 7, 3, 3, 0, 8};
Set<Integer> set = new HashSet<Integer>();
for (int j = 0; j < i.length; j++) {
set.add(i[j]);
}
System.out.println(set);
}
}
package test;
public class Test {
int c = -2147483648;//标记
int[] in1 = new int[] { 3, 3, 3, 7, 7, 7, 9, 8, 2, 2, 7, 7, 3, 3, 0, 8, 50,
46, 82, 64, 50, 50, 82, 94, 15, -56, -56, -58, -46, 7, 7, 7, 3, 3,
3, 50, 9, 8, -56, -58, 100, -100, 100, -100,78 };
public void toFC() {//判断标记有没有被占用
for (int t = 0; t < in1.length; t++) {
if (in1[t] == c) {
c++;
}else {
break;
}
}
}
public void f() {//冒泡比较
for (int i = 0; i < in1.length; i++) {
if (in1[0] == c) {
break;
}
for (int f = i; f < in1.length - 1; f++) {
if (in1[i] == in1[f + 1]) {
in1[f + 1] = c;//打标记
}
}
}
}
public void toF() {//遍历
for (int i = 0; i < in1.length; i++) {
if (in1[i] != c) {
System.out.print(in1[i] + " ");
}
}
}
public static void main(String[] args) {
Test t = new Test();
t.toFC();
t.f();
t.toF();
}
}