Java 从for循环中的字符串中删除字母
我怎样才能从字母表中猜出字母?因此,如果第一个猜测是AABB,我需要从字符串字母表中得到A和B,从而在没有字母A和B的情况下进行新的随机猜测Java 从for循环中的字符串中删除字母,java,Java,我怎样才能从字母表中猜出字母?因此,如果第一个猜测是AABB,我需要从字符串字母表中得到A和B,从而在没有字母A和B的情况下进行新的随机猜测 randomCode.clear();//Clears the random code ArrayList to put a new one in it Random r = new Random(); String alphabet = "ABCDEF"; StringBuilder result = new String
randomCode.clear();//Clears the random code ArrayList to put a new one in it
Random r = new Random();
String alphabet = "ABCDEF";
StringBuilder result = new StringBuilder(randomCode.size());
if(turn == 0){
guess = "AABB";
}else{
if(blackPin == 0 && whitePin ==0){
for (int c = 0; c < 4; c++) {
if(alphabet.charAt(c) == guess.charAt(c)){
}
randomCode.add(alphabet.charAt(r.nextInt(alphabet.length())));//generate 4 random letters with the letters ABCDEF and put in arrayList
}
for (Character c : randomCode){//Converts Char[] randomCode to a String
result.append(c);
}
guess = result.toString();//Gives the String guess 4 random letters.
randomCode.clear()//清除随机码数组列表以在其中放置新的随机码数组
随机r=新随机();
字符串字母表=“ABCDEF”;
StringBuilder结果=新的StringBuilder(randomCode.size());
如果(转动==0){
guess=“AABB”;
}否则{
如果(黑钉==0&&whitePin==0){
对于(int c=0;c<4;c++){
if(字母表字符(c)=猜测字符(c)){
}
randomCode.add(alphabet.charAt(r.nextInt(alphabet.length());//生成4个带有字母ABCDEF的随机字母并放入arrayList
}
对于(字符c:randomCode){//将字符[]随机码转换为字符串
结果:追加(c);
}
guess=result.toString();//给出字符串guess 4个随机字母。
如果可以避免,为什么要循环:
String abd = "ABCDEF";
String guess = "AABB";
System.out.println(abd.replaceAll(String.join("|", guess.split("")), ""));
这张照片是:
CDEF如果您有一个
数组列表,例如:
ArrayList<Character> alphabet = new ArrayList<>(Arrays.asList('A', 'B', 'C', 'D'));
您可以从字母表中删除猜测中出现的每个字母,如图所示:
for (int i = 0; i < guess.length(); i++)
alphabet.remove(new Character(guess.charAt(i)));
最有效的方法是利用这样一个事实,即字母的ASCII码是26个连续整数,并从char转换为int。代码65-68是ABCD
迭代字符并逐个比较。如果使用contains,它只会告诉您它在那里,而不是多少次。java中的字符串是不可变的,因此不能在字符串中删除字符。要删除字符,请使用StringBuilder!!!不管有多少次。如果它在那里,则应从视图中删除它就复杂性而言,这个解决方案是O(n),就像扫描输入的每个字母的循环一样(总是O(n))。
for (int i = 0; i < guess.length(); i++)
alphabet.remove(new Character(guess.charAt(i)));
for (int i = 0; i < alphabet.size(); i++)
System.out.print(alphabet.get(i));
ArrayList<Character> alphabet = new ArrayList<>(Arrays.asList('A', 'B', 'C', 'D'));
Random random = new Random();
String guess = "";
while (true) {
/* init a guess */
guess = "";
for (int j = 0; j < 4; j++)
guess += alphabet.get(random.nextInt(alphabet.size()));
System.out.println("The guess is: " + guess);
/* remove letters */
for (int j = 0; j < guess.length(); j++)
alphabet.remove(new Character(guess.charAt(j)));
/* the alphabet is empty */
if (alphabet.isEmpty()) {
System.out.println("The alphabet is empty");
break;
}
}