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

查找字符串中置换的索引

程项禹
2023-03-14
    null
dog cat rat
abcratdogcattgh
3

其中3是结果(由system.out打印)。

在列表中有重复的单词是合法的:

dog cat rat cat
abccatratdogzzzzdogcatratcat
16

我生成的代码可以工作,前提是答案开头的单词以前没有出现过。在这里的第二个示例中,我的代码将失败,因为dog已经出现在答案从索引16开始的地方。

    null

下面是我的代码(应该是可编译的):

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String line = br.readLine();
        String[] l = line.split(" ");
        String s = br.readLine();

        int wl = l[0].length();
        int len = wl * l.length;
        int sl = s.length();

        for (String word : l) {
            int i = s.indexOf(word);
            int z = i;
            //while (i != -1) {
                int y = i + len;
                if (y <= sl) {
                    String sub = s.substring(i, y);
                    if (containsAllWords(l, sub)) {
                        System.out.println(s.indexOf(sub));
                        System.exit(0);
                    }
                }
                //z+= wl;
                //i = s.indexOf(word, z);
            //}
        }
        System.out.println("-1");
    }

    private static boolean containsAllWords(String[] l, String s) {
        String s2 = s;

        for (String word : l) {
            s2 = s2.replaceFirst(word, "");
        }

        if (s2.equals(""))
            return true;
        return false;
    }
}

我可以通过取消注释while循环来解决我的问题,并使其通过第二个示例。然而,这会对性能产生严重影响。当我们输入100个单词、每个10个字符和1000000个字符的字符串时,完成所需的时间非常糟糕。

假定测试台中的每个案例都有一个最大执行时间,添加while循环将导致测试在没有及时完成执行的基础上失败。

共有1个答案

颛孙兴旺
2023-03-14

如果将字符串连接在一起并使用要搜索的新字符串。

String a = "dog"
String b = "cat"
String c = a+b; //output of c would be "dogcat"

这样你就可以克服狗在某处出现的问题。

但是如果catdog也是一个有效值,这就不起作用了。

 类似资料:
  • 问题内容: 我想在给定的输入string中找到某个子字符串最后一次出现的位置(或索引)。 例如,假设输入字符串为,子字符串为,则应输出3。 我怎样才能做到这一点? 问题答案: 用途: 另外,请勿将其用作变量名,否则将使内置的阴影变暗。

  • 问题内容: 下面是我的表 当我执行 我的位置是1。 我要实现的是找到整数的第一个位置,这样我将获得以下输出。 任何想法我怎么能做到这一点? 问题答案: 在xdazz答案的帮助下,我做了一些更改,最后得到了答案… 演示版

  • 问题内容: 我有: 功能: 和一个字符串:, 我本质上是想输入并返回,但是我却不断地返回。 码: 不知道怎么了! 问题答案: 理想情况下,您会 像痴呆的刺猬说的那样 使用 str.find 或 str.index 。但是你说你不能… 您的问题是您的代码仅搜索搜索字符串的第一个字符(第一个字符在索引2)。 您基本上是说if是in ,递增直到我测试它返回3时,但这仍然是错误的。这是一种方法。 它产生了

  • 我有一个字符串“1,3,5,7,9,11,12,14”,我想检查该字符串在java中是否包含“12,3,14”。 我的代码:

  • 我对RegEx-es和类似的搜索模式非常缺乏经验,而且我所尝试的每一种方法都不能正常工作(大多数情况下会导致)。 找到字符串中最后一组数字开始的索引的可靠而简单的方法是什么?

  • 问题内容: 我正在寻找一种在字符串中查找JSON数据的方法。像wordpress简码一样思考它。我认为最好的方法是使用正则表达式。我不想解析JSON,只需查找所有出现的事件。 正则表达式中是否有办法使括号的数量匹配?目前,当我嵌套对象时遇到了这个问题。 演示的快速示例: 结果,我想要两个JSON字符串。谢谢! 问题答案: 从给定的文本中提取JSON字符串 由于您正在寻找一种简单的解决方案,因此可以