我目前正在执行此任务。在任务的第一部分,它要求我用布尔值检查字符串。只有当输入字符串的每个字符都是a,A,c,C,g,G,t或T之一时才返回true和true。如果字符串为null或为空,则返回false。我有点失落,因为我不确定如何比较它。我正在寻找使用数组并使用for循环检查字符串。这是一个可行的选择吗?如果没有,我应该看看还有其他选择吗?
到目前为止,这是我的代码。我将字符串s放在小写字母上,以便比较容易,只有4个字符。
public static boolean isDNASequence(String s) {
boolean isDNASequnce = false;
char [] acceptableInput = {'a', 'c', 'g', 't'};
String x = s.toLowerCase();
我是一个非常大的java菜鸟,所以如果我不知道我的方式,请原谅我:D
答案 0 :(得分:1)
尝试使用正则表达式。
模式[aAcCgGtT]+
应与您正在寻找的模式匹配。
例如:
public static boolean isDNASequence(s) {
return s.matches("^[aAcCgGtT]+$");
}
为了进一步解释,引号中的模式表示匹配:
^
- 从字符串的开头
[aAcCgGtT]
- 任何这些角色
+
- 至少一次
$
- 到字符串的末尾
答案 1 :(得分:0)
我认为这就是你要找的东西。
public static boolean isDNASequence(String s) {
char[] acceptableInput = { 'a', 'c', 'g', 't' };
String x = s.toLowerCase();
for (int i = 0; i < x.length(); i++) {
boolean isAcceptable = false;
for (int j = 0; j < acceptableInput.length; j++) {
if (x.charAt(i) == acceptableInput[j])
isAcceptable = true;
}
if (isAcceptable == false)
return false;
}
return true;
}
答案 2 :(得分:0)
您可以在Java文档中找到方法String.matches()。如果String匹配正则表达式,它将返回true。
正则表达式模式[aAcCgGtT]+
可能正是您所寻找的。 p>
我发现this是学习正则表达式的非常好的指南!
答案 3 :(得分:0)
试试这个
public static boolean isDNASequence(String s) {
for (int i = 0; i < s.length(); i++) {
if ("AaCcGgTt".indexOf(s.charAt(i)) == -1) {
return false;
}
}
return true;
}