当前位置: 首页 > 知识库问答 >
问题:

编写关于单词匹配的Java练习没有意义

伊飞光
2023-03-14

所以问题是这样的:

给定一个字符串和第二个“单词”字符串,如果单词出现在字符串的前面,我们会说它与字符串匹配,除了它的第一个字符不需要完全匹配。在匹配时,返回字符串的前面,或以其他方式返回空字符串。所以,所以用字符串“河马”,“嗨”这个词返回“嗨”,“xip”返回“臀部”。单词长度至少为1。"

首先,我甚至不知道这个问题在问什么。第二,我找到了一个解决方案,但我也没有找到解决方案。有人能帮我理解到底发生了什么吗?有其他的方法吗?

public String startWord(String str, String word) {
    if (str.length() < 1) {
       return "";
    }
    if (str.substring(1).indexOf(word.substring(1)) != 0) { // I am utterly confused here, wouldn't this always be true if it starts beyond zero?
        return "";
    }
       return str.substring(0, word.length());
    }

共有3个答案

庄文栋
2023-03-14
public String startWord(String str, String word) {
  int len1 = str.length();
  int len2 = word.length();
  String withoutFirst = word.substring(1,len2);
  String result = "";
  if(len1>=len2 && len2>0){
   if(str.substring(0,len2).equals(word)){
     result = word;
     }else if(word.substring(1,len2).equals(str.substring(1,len2))){
      result = str.substring(0,1) + word.substring(1,len2);
    }
  }else{
   result = "";
  }
  return result;
}
吴哲
2023-03-14

您的任务是查看字符串str是否以word开头。但是你没有匹配第一个字符。这就是为什么使用“1”来指定只需要以第二个字符开头的字符串和单词。“0”将表示第一个字符。字符串的“indexOf”方法搜索您传入的单词的实例,并返回索引。。字符号。。。找到火柴的地方。所以如果一开始就找到了。。第一个字符。。。它将返回0。因为您使用子字符串截断了这两个字符的第一个字符,所以您只是在字符0处查找匹配项。

如果在0处找不到索引(-1表示未找到,或大于0表示正在找到的单词,但不在str的开头),则返回空字符串。

一个小小的改变是只砍掉“单词”的第一个字符,看看它是否在str的索引1中找到。但是更简单的方法是砍掉两者的第一个字符,看看它们是否在开始时排队。

另一种变化是做一个“正则表达式”模式匹配,但这对你来说会不必要地混淆。

Original str:  "woogie"
Original word: "goog"

这是一场比赛吗?

砍掉第一个字符:

Shortened str: "oogie"
Shortened word: "oog"

发现“oog”从“oogie”的位置0开始,因此indexOf返回0。

钱均
2023-03-14

首先,我甚至不知道这个问题在问什么。

你有第一个字符串和第二个字符串(单词)。

如果出现以下情况,则该单词与第一个字符串匹配:

  • 该单词与第一个字符串的开头匹配
  • 即使单词的第一个字母与前面字符串的第一个字母不匹配,单词也会与第一个字符串的开头匹配

如果单词与第一个字符串匹配,则返回第一个字符串的第一个字长字符。否则,返回一个空字符串

单词的长度至少为1。

第二,我找到了一个解决方案,但我也没有找到解决方案。有人能帮我理解到底发生了什么吗?

这是我的解决方法。我希望它更有意义。

public String startWord(String str, String word) {
    String x = word.substring(1);
    if (str.startsWith(x, 1)) {
        return str.substring(0, word.length());
    } else {
        return "";
    }
}
 类似资料:
  • 我试着用一根绳子: 并返回该字符串中的所有2字对。即: 但是现在,我能做的就是让它回来: 我如何定义我的同时循环,这样我就可以解释这种缺乏重叠的单词?我的代码如下:(真的,我很高兴它只是返回一个表示它找到了多少字符串子集的int...) 谢谢大家。

  • null 匹配:“123”、“ABC123”、“ABC123”、“10.00”、“ABC.123”、“FOO10.00” 不匹配:“糖”、“拉什”、“XYZ” 在下面的示例字符串中,我想要的匹配以粗体-斜体表示:789--789 ABC 123 10.00 ABC 123 123ABC ABC 123ABC ABC 123.ABC

  • 我试图找出这种情况下的正则表达式模式,以便序列化结果: 我想捕捉所有有限制的单词/单词组合: 只有单词,没有数字或字符,除了撇号 中间有空格的单词要包含在一起 到目前为止,我已经想出了: 但我有尾随空格。所以这和“七月”匹配,而不是“七月”。如何在保留单词之间的空格的同时防止尾随空格。

  • 本文向大家介绍grep 匹配整个单词,包括了grep 匹配整个单词的使用技巧和注意事项,需要的朋友参考一下 示例 给定一个文件sample: grep“ hello”的法线返回: 使用-w允许选择包含构成整个单词的匹配项的行:            

  • 问题内容: 我想匹配拼写不同但发音相同的单词。像“邮件”和“男性”,“飞机”和“普通”。我们可以在Elasticsearch中进行这样的匹配吗? 问题答案: 您可以为此使用语音令牌过滤器。语音令牌过滤器是一个插件,需要单独的安装和设置。您可以使用此博客,该博客详细说明了如何设置和使用语音令牌过滤器。

  • 即时消息使用rails 5 我有一个叫普莱斯的模型。(有许多产品) Prices有一个名为Product的模型(属于price) 在这种情况下,我可以创建新产品,也可以销毁产品。 我的路线 在我的价格秀里 在我的产品编辑中 在我的产品控制器中 我的耙路线 问题是 当我点击提交按钮时,我发现了这个错误 谢谢你帮我