- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.
Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule.
For example,
Given
s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
,Return:
["AAAAACCCCC", "CCCCCAAAAA"]
.
我的代码:
public class Solution {
public List<String> findRepeatedDnaSequences(String s) {
List<String> res = new ArrayList<String>();
if(s == null || s.length() == 0){
return res;
}
for(int i = 0; i < s.length() - 10; i++){
// System.out.print(occurance(s,sub) + ",");
String sub = s.substring(i, i+10);//endIndex is exclusive
System.out.print(occurance(s,sub) + ",");
if(occurance(s,sub) > 1){
res.add(sub);
}
}
return res;
}
private int occurance(String s, String sub){
int occurTimes = 0;
for(int i = 0; i < s.length() - sub.length(); i++){
for(int j = 0; j < sub.length(); j++){
if(sub.charAt(j) != s.charAt(i+j)){
break;
}
if(j == sub.length() - 1){
occurTimes++;
}
}
}
return occurTimes;
}
}
最佳答案
好吧,findRepeatedDnaSequences
将为多次出现的子字符串调用 occurance(s,sub)
多次。
您可以通过将结果保存在 Set
而不是 List
中来解决这个问题。
public List<String> findRepeatedDnaSequences(String s) {
Set<String> res = new HashSet<String>();
if(s == null || s.length() == 0){
return new ArrayList<String>();
}
for(int i = 0; i < s.length() - 10; i++){
String sub = s.substring(i, i+10);
System.out.print(occurance(s,sub) + ",");
if(!res.contains(sub) && occurance(s,sub) > 1){
res.add(sub);
}
}
return new ArrayList<String>(res);
}
当然,你可以摆脱 occurance(s,sub)
并使你的代码更高效:
public List<String> findRepeatedDnaSequences(String s) {
Set<String> dup = new HashSet<String>();
Set<String> res = new HashSet<String>();
if(s == null || s.length() == 0){
return new ArrayList<String>();
}
for(int i = 0; i < s.length() - 10; i++){
String sub = s.substring(i, i+10);
if(!dup.add(sub)) {
res.add(sub); // add sub to res only if it is already present in dup
}
}
return new ArrayList<String>(res);
}
输出(对于给定的输入):
[AAAAACCCCC, CCCCCAAAAA]
关于java - 谁能帮我检查为什么我的解决方案会收到重复的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40990025/
嗨,我是第一次玩 Pig,我很好奇如何处理将一个字段拆分成多个其他字段。 我有一个包,A,如下图: grunt> Dump A; (text, text, Mon Mar 07 12:00:00 CD
如何添加架构中未定义的固定字段(例如日期或月份)?我运行了以下 pig 脚本以将固定日期添加到我的结果表中,并收到以下错误消息:Invalid field projection。方案中不存在投影字段
我是一名优秀的程序员,十分优秀!