【2019.12.30】算法学习记录——输出三次出现的数字

算法-输出三次出现的数字


输入一个整数字符串,例如:“1,2,2,2,3,4,4,4,6”,选出所有出现3次的整数组成新的字符串并输出。
示例:
输入: “1,2,2,2,3,4,4,4,6”
输出: “24”

import java.util.HashMap;
import java.util.Map;


public class GetThree
{
    public int[] transfer(String list){
        String[] a = list.split(",");
        int size = a.length;
        int[] result = new int[size];
        for(int i = 0; i < a.length; i++){
            result[i] = Integer.parseInt( a[i] );
        }
        return result;
    }
    
    public String getResult(String orign){
        Map<Integer,Integer> map = new HashMap<Integer, Integer>();
        int[] orignList = transfer(orign);
        for(int i=0; i<orignList.length; i++){
            boolean containsKey = map.containsKey(orignList[i]);
            if(containsKey){   
             int value = map.get(orignList[i]) + 1;
             map.put(orignList[i], value);
            }
            else{
                map.put(orignList[i], 1);
            }            
        }
        String result = "";
        for(Integer key : map.keySet()){
            if(map.get(key) == 3){
                result += String.valueOf(key);
            }
        }
        return result;    
        }

    }

笔记
1. String和各种格式互转:

  • 其他类型转String:
String s = String.valueOf( value); // 其中 value 为任意一种数字类型。
  • String转其他类型:
String s = "169"; 

byte b = Byte.parseByte( s ); 

short t = Short.parseShort( s ); 

int i = Integer.parseInt( s ); 

long l = Long.parseLong( s ); 

Float f = Float.parseFloat( s ); 

Double d = Double.parseDouble( s );

2. JAVA split用法:
e.g.

String[] splitAddress=address.split(",");
System.out.println(splitAddress[0]+splitAddress[1]+splitAddress[2]+splitAddress[3]);

如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
因为,“.” 和 “|” 和 “*” 等都是转义字符,必须得加"\",而逗号不用。

3. JAVA Map的基本用法:
Map的键可以是任意类型。
参考博文1
参考博文2
判断Map中是否包含某个key需要使用到map中的containsKey()方法;
判断Map中是否包含某个value值需要使用到map中的containsValue()方法
参考博文:判断Map中是否包含某个key需要使用到map中的containsKey()方法

参考文献:

  1. Java String和各种格式互转
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值