【发布时间】:2017-01-08 21:05:38
【问题描述】:
我正在尝试检查一个字符串是否包含字母表中的所有字母。我创建了一个包含整个字母表的ArrayList。我将字符串转换为 char 数组,并遍历字符数组,并且对于 ArrayList 中存在的每个字符,我从中删除一个元素。最后,我试图检查Arraylist 是否为空,以查看是否所有元素都已删除。这将表明该字符串包含字母表中的所有字母。
不幸的是,代码在我从数组列表中删除元素的 if 条件内抛出 IndexOutOfBoundsException 错误
List<Character> alphabets = new ArrayList<Character>();
alphabets.add('a');
alphabets.add('b');
alphabets.add('c');
alphabets.add('d');
alphabets.add('e');
alphabets.add('f');
alphabets.add('g');
alphabets.add('h');
alphabets.add('i');
alphabets.add('j');
alphabets.add('k');
alphabets.add('l');
alphabets.add('m');
alphabets.add('n');
alphabets.add('o');
alphabets.add('p');
alphabets.add('q');
alphabets.add('r');
alphabets.add('s');
alphabets.add('t');
alphabets.add('u');
alphabets.add('v');
alphabets.add('w');
alphabets.add('x');
alphabets.add('y');
alphabets.add('z');
// This is the string- I've just put a random example
String str = "a dog is running crazily on the ground who doesn't care about the world";
//Remove all the spaces
str = str.replace(" ", "");
// Convert the string to character array
char[] strChar = str.toCharArray();
for (int i = 0; i < strChar.length; i++) {
char inp = strChar[i];
if (alphabets.contains(inp)) {
alphabets.remove(inp);
}
}
if (alphabets.isEmpty())
System.out.println("String contains all alphabets");
else
System.out.println("String DOESN'T contains all alphabets");
【问题讨论】:
-
你可以循环为
int i = (int)'a'; i <= 'z'而不是List -
所有alphabets?像希腊语(αβγδε...ψω)和俄语(абвгд...юя)?还是您的意思是“(又名英文)字母表的所有字母”(abcde...yz)?
-
@KevinEsche:如果列表包含不相互跟随的字符,还有 "abc...xyz".toCharArray()
-
反过来做,循环字母并检查每个字母是否在你的字符串中。