用java解 leetcode上easy题2(开始探险)

我的第二题:

299. Bulls and Cows

<span style="font-size:18px;">import java.util.*;
public class Solution {
    String secret,guess;
    public String getHint(String secret, String guess) {
        String str;
		int bullCounts = 0;
		int cowCounts = 0;
		ArrayList<Character> sec = new ArrayList<>();
		for(int i=0; i<secret.length(); i++){
			sec.add(secret.charAt(i));
		}
		ArrayList<Character> gue = new ArrayList<>();
		for(int j=0; j<guess.length(); j++){
			gue.add(guess.charAt(j));
		}
		Hashtable<String, Object> match = new Hashtable<>();
		match.put(secret, sec);
		match.put(guess, gue);
               //这里想用hashtable,因为它给了提示,但是后面就用链表去了
                for(int k = 0; k<sec.size(); k++){
			if(sec.get(k)==gue.get(k)){
				bullCounts++;
				sec.remove(k);
				gue.remove(k);
				k--;//注意,这里使用了remove()方法,链表的size减一了,所以循环变量k--
			}
		}
		for(int i = 0; i<sec.size(); i++){
			for(int j=0; j<gue.size(); j++){
				if(sec.get(i)==gue.get(j)){
					cowCounts++;
					//sec.remove(i);
					gue.remove(j);
					j--;//同理
					break;//只要有匹配的元素,就行了,不要继续遍历后面的,跳出循环
				}
			}
		}
		//for(Iterator<Integer> ite =sec.iterator(); ite.hasNext();){
		//}
		str = bullCounts + "A" + cowCounts + "B";//字符串的加法运算
		return str;
    }
}</span>
解这道题时,刚开始想到的是只用String类,就解决,字符匹配用charAt(),移除用replace(older,“”)代替,后来发现只有空字符串,没有空字符,且字符char不能强制转换为String类,就放弃了这个方法,改用链表结构,remove方便,但是runtime:38ms,也不是优解,继续优化。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值