为了账号安全,请及时绑定邮箱和手机立即绑定

查找字符串中的子序列

查找字符串中的子序列

杨魅力 2022-09-22 15:59:20
我一直在解决这组关于黑客排名的挑战,链接:字符串中的黑客排名我想出了我的算法,它是这样的:根据黑客排名字符串检查它是否至少有两个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] < p(1) < p[2] < ....< p[9] 是真的,则包含黑客排名。我知道这是非常糟糕的,并且由于此错误,输出也没有出现:Terminated due to timeout法典:我有一个名为的方法,它返回“YES”或“NO”字符串hackerrankInString(String s)// 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++;    }    }    return "NO";}请帮帮我这个,我想学两个傻瓜,如何解决这一挑战如何有效地解决我的第三个算法语句任何帮助将不胜感激。
查看完整描述

2 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您可以使用正则表达式来解决问题:


static String hackerrankInString(String input) {

    final String regexHack = ".*h.*a.*c.*k.*e.*r.*r.*a.*n.*k.*";

    return input.matches(regexHack) ? "YES" : "NO";

}

使用 调用它:


System.out.println(hackerrankInString("hhaacckkekraraannk"));  // YES

System.out.println(hackerrankInString("hackerworld"));         // NO

您可以在此处试用正则表达式。


查看完整回答
反对 回复 2022-09-22
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

没有太多时间检查,但可以看起来像那样


public static String solve(String startWord, String givenWord) {

    for(int i = 0; i < startWord.length(); i++) {

        String letter = startWord.substring(i, i + 1);

        int index = givenWord.indexOf(letter);

        if(index == -1) {

            return "NO";

        } else {

            givenWord = givenWord.substring(index + 1, givenWord.length());

        }

    }


    return "YES";

}


查看完整回答
反对 回复 2022-09-22
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号