【发布时间】:2016-10-19 05:12:23
【问题描述】:
到目前为止,我已经想出了这个。我试图最小化字符串操作并隔离内置数据类型、数组和整数操作的解决方案。
我正在寻找更优雅的方式来检查 java 中的 pangram 字符串。
优雅,代码行数最少,也欢迎其他高效算法。
请提供不带 lambda 表达式的建议。
private static boolean isPangrams(String ip) {
char[] characterArray = ip.toLowerCase().toCharArray();
int map[] = new int[26];
int sum = 0;
for(char current : characterArray) {
int asciiCode = (int) current;
if (asciiCode >= 97 && asciiCode <= 122) {
if (map[122 - asciiCode] == 0) {
sum += 1;
map[122 - asciiCode] = 1;
}
}
}
return sum == 26;
}
【问题讨论】:
-
好吧,“改进”工作代码应该转到 codereview.stackexchange.com ......无论如何:它并没有变得更好,但你可以使用 Bitset 而不是 int 数组 - 为什么当你真正需要真/假时使用数字?!
-
BitSet ,是一个简洁的输入。谢谢。
标签: java algorithm performance optimization pangram