【发布时间】:2019-04-06 08:59:46
【问题描述】:
我一直在 Hackerrank 上解决这组挑战,链接:Hackerrank in a String
我想出了我的算法,它是这样的:
- 根据hackerrank字符串检查是否至少有两个a、r和k
- 检查它是否包含以下字符 h、a、c、k、e、r、n、k
- 设 p[0], p(1), p[2].....,p[9] 分别为 h, a, c, k, e, r, r, a, n 的索引, k 在字符串中。如果 p[0]
我知道很糟糕,由于这个错误,输出也没有出现:Terminated due to timeout
代码:
我有一个名为hackerrankInString(String s) 的方法,它返回“YES”或“NO”字符串
// Complete the hackerrankInString function below.
static String hackerrankInString(String s) {
int countR = 0, countA = 0, countK = 0;
//for reading multi-line inputs, it will perform operation individually
// on the inputs
while(scanner.hasNextLine()){
for(int i=0; i < s.length(); i++){
if(s.charAt(i) == 'r')
countR++;
if(s.charAt(i) == 'a')
countA++;
if(s.charAt(i) == 'k')
countK++;
}
//It should atleast have two As, two Rs, and two Ks
if(countR >= 2 && countA >= 2 && countK >= 2){
//If the string contains hackerrank
if(s.contains(Character.toString('h')) && s.contains(Character.toString('a')) && s.contains(Character.toString('c')) && s.contains(Character.toString('k')) && s.contains(Character.toString('e')) && s.contains(Character.toString('r')) && s.contains(Character.toString('n'))){
if((s.indexOf('h') > s.indexOf('a')) && (s.indexOf('h') > s.indexOf('c')) && (s.indexOf('h') > s.indexOf('k')) && (s.indexOf('h') > s.indexOf('e')) && (s.indexOf('h') > s.indexOf('r')) && (s.indexOf('h') > s.lastIndexOf('r')) && (s.indexOf('h') > s.lastIndexOf('a')) && (s.indexOf('h') > s.indexOf('n')) && (s.indexOf('h') > s.lastIndexOf('k'))){
if((s.indexOf('a') > s.indexOf('c')) && (s.indexOf('a') > s.indexOf('k')) && (s.indexOf('a') > s.indexOf('e')) && (s.indexOf('a') > s.indexOf('r')) && (s.indexOf('a') > s.lastIndexOf('r')) && (s.indexOf('a') > s.lastIndexOf('a')) && (s.indexOf('a') > s.indexOf('n')) && (s.indexOf('a') > s.lastIndexOf('k'))){
if((s.indexOf('c') > s.indexOf('k')) && (s.indexOf('c') > s.indexOf('e')) && (s.indexOf('c') > s.indexOf('r')) && (s.indexOf('c') > s.lastIndexOf('r')) && (s.indexOf('c') > s.lastIndexOf('a')) && (s.indexOf('c') > s.indexOf('n')) && (s.indexOf('c') > s.lastIndexOf('k'))){
if((s.indexOf('k') > s.indexOf('e')) && (s.indexOf('k') > s.indexOf('r')) && (s.indexOf('k') > s.lastIndexOf('r')) && (s.indexOf('k') > s.lastIndexOf('a')) && (s.indexOf('k') > s.indexOf('n')) && (s.indexOf('k') > s.lastIndexOf('k'))){
if((s.indexOf('e') > s.indexOf('r')) && (s.indexOf('e') > s.lastIndexOf('r')) && (s.indexOf('e') > s.lastIndexOf('a')) && (s.indexOf('e') > s.indexOf('n')) && (s.indexOf('e') > s.lastIndexOf('k'))){
if((s.indexOf('r') > s.lastIndexOf('r')) && (s.indexOf('r') > s.lastIndexOf('a')) && (s.indexOf('r') > s.indexOf('n')) && (s.indexOf('r') > s.lastIndexOf('k'))){
if((s.lastIndexOf('r') > s.lastIndexOf('a')) && (s.lastIndexOf('r') > s.indexOf('n')) && (s.lastIndexOf('r') > s.lastIndexOf('k'))){
if((s.lastIndexOf('a') > s.indexOf('n')) && (s.lastIndexOf('a') > s.lastIndexOf('k'))){
if(s.indexOf('n') > s.lastIndexOf('k')){
return "YES";
}
}
}
}
}
}
}
}
}
}
}
}
return "NO";
}
请帮帮我,我想学两件事,
- 如何解决这一挑战
- 如何有效解决我的第三个算法语句
任何帮助将不胜感激。
【问题讨论】:
标签: java character-encoding subsequence