vue 取数组中的元素_[编程题]已知一个数组存在重复元素,请去掉数组中的重复元素。2019_04_17...

ef52fe3ea62b2d16cc6f839fddaa93db.png

--------------[感谢小郡提供的图片]

老师“这道题有难度!比上面难”

我“啊哈!interesting!”直接开工做这个题。初读题我发现其在表述上很发散可以有多种情况 ,没给数据类型没给数组内部格式

我“您没规定那我就自由发挥了”

:)

我当时想到两种情况。

2d0a97d331b1a7615310b65a73f3f722.gif

1.数组只含有大小写字母,数字等字符数据类型

package day06_homework;

import java.util.Scanner;

/**
 * 已知一个数组存在重复元素,请去掉数组中的重复元素。
 *
 */
public class Number07 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入字符串");
		String string = scan.nextLine();
		char line[]=string.toCharArray();
		int illegal=0;
		int number [] = new int[62];
		char Hashcode[] = new char[]{'0','1','2','3','4','5','6','7','8','9',
		'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q',
                'R','S','T','U','V','W','X','Y','Z',
		'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q',
                 'r','s','t','u','v','w','x','y','z'};//数字 字母 
		
		for(int i=0;i<line.length;i++){
			if(line[i]>='0'&&line[i]<='9'){
				number[line[i]-'0']+=1;
			}else if(line[i]>='A'&& line[i]<='Z'){
		    number[line[i]-'A'+10] +=1;
			}else if(line[i]>='a'&& line[i]<='z'){
				number[line[i]-'a'+36] +=1;
			}else{
				 illegal+=1;
			}
		}
		for(int i=0;i<62;i++){ 
			if(number[i]>=1){
				System.out.println(Hashcode[i]);
			}
		}
		
	}
		
}

[在变量,包名,类的命名上可能没遵守规范后面会加快熟悉命名规范]

  • 这里我想到的是用哈希,我理解的哈希是“映射”高度概括是种key-value的映射,求key 然后用某种数据结构映射到value 这个value可能不是最终的value 根据情况在加操作得出最后的value.
  • 最坏的情况和最好的情况的都要执行第一个for循环所以这个算法的时间复杂度是O(n)

2.数组中有大小写字符,数字(char),空格,!@#....等等特殊符号

暂时想到这里,我还没想到解法 ,欢迎各位网友集思广益想答案,我会在@auther注释中注明姓名或者网友ID


上面内容会维护更新有新想法和解法都会添加进去,希望有更简洁更优美效率更高的代码网友私信我答案共同学习交流,我会在明显的地方注明作者和鸣谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值