您的位置:首页 > 编程语言 > Java开发

Bulls and Cows-LeetCode

2015-12-03 02:14 357 查看
姑且先记录一下程序调试成功的一些感想吧。

1. 对于java容器的掌握不够熟练,也是后来程序运行速度较慢的原因。

2. 容器中删减和插入了新的数据以后,原来的角标和检索的都发生了什么事情?

看看其他大神的代码,好好读《Thinking in java》不要偷懒。

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.function.Function;
import java.util.function.ToDoubleFunction;
import java.util.function.ToIntFunction;
import java.util.function.ToLongFunction;

public class Solution {
String secret;
String guess;
int bullNum=0;
int cowNum=0;
public String getHint(String secret, String guess) {
/*
1.pick out the bulls by checking the position one by one,and remove them,log the bulls number.

2.sort the numbers by increasing order
3.merge sort like to compare to find cows and log them.
*/

this.secret=secret;
this.guess=guess;

char[] secretArray=this.secret.toCharArray();
char[] guessArray=this.guess.toCharArray();

List<Character> secretArrayList=new ArrayList();
List<Character> guessArrayList=new ArrayList();

for(int i=0;i<secretArray.length;++i){
secretArrayList.add(new Character(secretArray[i]));
guessArrayList.add(new Character(guessArray[i]));
}
Iterator<Character> secretIter=secretArrayList.iterator();
Iterator<Character> guessIter=guessArrayList.iterator();
for(;secretIter.hasNext()&&guessIter.hasNext();){
if(secretIter.next().equals(guessIter.next())){
secretIter.remove();
guessIter.remove();
bullNum++;
}
}

Comparator <Character> comparator= new Comparator<Character>(){

public int compare(Character o1, Character o2) {
// TODO Auto-generated method stub
if (o1.charValue()>o2.charValue()){
return 1;
}
if (o1.charValue()<o2.charValue()){
return -1;
}
if (o1.charValue()==o2.charValue()){
return 0;
}
return 0;
}

};
secretArrayList.sort(comparator);
guessArrayList.sort(comparator);
//1.while two containers haven't reach their end.
//Iterator<Character> secretIter=secretArrayList.iterator();
// Iterator<Character> guessIter=guessArrayList.iterator();
//guessIter.
// guessArrayList.
for(int i=0,j=0;i<secretArrayList.size()&&j<guessArrayList.size();){
if(secretArrayList.get(i).equals(guessArrayList.get(j))){
secretArrayList.remove(i);
guessArrayList.remove(j);
//i++;
//j++;
cowNum++;
}else if(secretArrayList.get(i)<guessArrayList.get(j)){
secretArrayList.remove(i);

}else{
guessArrayList.remove(j);

}
}
/*  while(secretIter.hasNext()&&guessIter.hasNext()){
if(guessIter.next().equals(secretIter.next())){
cowNum++;
System.out.println("cowNum:"+cowNum);
secretIter.remove();
guessIter.remove();
}else if(secretIter.next()<guessIter.next()){
secretIter.remove();
}else{
guessIter.remove();
}
}
*/
String result=bullNum+"A"+cowNum+"B";

return result;
}
public static void main(String []args){
Solution solution=new Solution();
System.out.println(solution.getHint("1234", "4321"));

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java