Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查字符串中是否存在模式_Java_Arrays_Loops_Iteration - Fatal编程技术网

Java 检查字符串中是否存在模式

Java 检查字符串中是否存在模式,java,arrays,loops,iteration,Java,Arrays,Loops,Iteration,我想使用迭代检查字符串中是否存在模式 public static Boolean patternFinder(String str, String pattern){ for (int i = 0; i <= str.length()-pattern.length();i++){ Boolean found = true; for (int f = 0; f < pattern.length();f++){ if (pa

我想使用迭代检查字符串中是否存在模式

public static Boolean patternFinder(String str, String pattern){
    for (int i = 0; i <= str.length()-pattern.length();i++){
        Boolean found = true;
        for (int f = 0; f < pattern.length();f++){
            if (pattern.charAt(f) != str.charAt(i+f)){
                found = false;
                break;
            }
        }
        if (found){
            return true;
        }
    }
    return false;
}
这是我目前拥有的,但我一直因此而变得虚假

public static void main(String args[]) {
        String pattern = "abc";
        String letters = "abcdef";

        char[] patternArray = pattern.toCharArray();
        char[] lettersArray = letters.toCharArray();

        for(int i = patternArray.length - 1; i<= 2; i++){
            for(int j = lettersArray.length - 1; j <= 5;j++){
                if(patternArray[i] == lettersArray[j]){
                    System.out.println("true");
                } else{
                    System.out.println("false");
                }
            }
        }
    }
publicstaticvoidmain(字符串参数[]){
字符串模式=“abc”;
字符串字母=“abcdef”;
char[]patternArray=pattern.toCharArray();
char[]lettersArray=letters.toCharArray();
对于(int i=patternArray.length-1;i
public静态布尔模式查找器(String str,String pattern){
对于(inti=0;i为什么不:

public static void main(String args[]) {
    String pattern = "abc";
    String letters = "abcdef";

    char[] patternArray = pattern.toCharArray();
    char[] lettersArray = letters.toCharArray();
    boolean matched = false;
    for(int i = 0; i< lettersArray.length-patternArray.length && !matched; i++){
        for(int j = 0; j < patternArray.length;j++){
            if(patternArray[j] == lettersArray[i+j]&&j+1==patternArray.length){
                matched = true;
                System.out.println("true");
            }
            else if(i+1 == lettersArray.length-patternArray.length && j+1 == patternArray.length){
                System.out.println("false");
        }
    }
}
publicstaticvoidmain(字符串参数[]){
字符串模式=“abc”;
字符串字母=“abcdef”;
char[]patternArray=pattern.toCharArray();
char[]lettersArray=letters.toCharArray();
布尔匹配=假;
对于(int i=0;i
如果要获取所有匹配项,我使用列表将匹配项地址保存在字符串中

    String pattern = "abc";
    String letters = "defabcdefabc";
    int i = 0;
    List<Integer> matches = new ArrayList();
    while (i <= letters.length() - pattern.length()) {
        if (letters.substring(i, i + pattern.length()).equals(pattern))
            matches.add(i);
        i += 1;
    }
String pattern=“abc”;
字符串字母=“defabcdefabc”;
int i=0;
列表匹配项=新的ArrayList();

而(i问题是每个数组有两个循环。在这里,您需要使用相同的索引在两个数组中遍历单个循环。

这里有一个简单的字符串匹配程序,它将查找模式的所有匹配项

由于O(mn)时间复杂度(m和n分别是搜索字符串和模式的长度),因此不推荐使用任何实用的方法

类马铃薯
{
公共静态void main(字符串参数[])
{
char[]search=“从我身上流过”。toCharArray();
char[]pattern=“flow”.toCharArray();

for(int i=0;i@Ramanlfc,因为正则表达式太简单:)我试图在没有它的情况下找到一个解决方案,因为我很好奇如何使用迭代来完成。使用
String#contains
?在for循环中,您的计数是错误的。您正在设置
I=patternArray.length-1
,它是2,然后在2小于或等于2时递增。这将在一次运行后终止。@imbondbab你是在寻找所有匹配项,还是一个匹配项就足够了?@imbondbbaby如果你想在for循环中保留print语句,那么我的解决方案呢?谁向你要python代码?你没有看到问题中的标签
java
?如果很容易将其转换为java,那么就发布你的代码来完成这个简单的任务。谢谢她没有回答sk我怎样才能用java写这篇文章,他问我怎样才能不使用正则表达式就把它写出来。我把代码改成java to,我希望没有语法错误。仅供参考,如果OP post代码是java的,你应该用java修复它,或者如果OP的标签中存在标签
java
,你应该用java写一个程序。如果有机会,我会的。下次我不会给出答案@ RockOnGom问题被标记为java,而不是Python。因此,标准是用java代码来发布答案,而不是Python,不是C++,不是JavaScript,甚至不是Scala或运行在JVM上的另一种语言。实际上是伪代码,它可以用所需的编程语言实现,然后让社区向上投票/向下投票,如果它解决了问题。
class Potato 
{
    public static void main(String args[])
    {
        char[] search = "flow flow flow over me".toCharArray();
        char[] pattern = "flow".toCharArray();

        for(int i = 0; i <= search.length - pattern.length; i++)
          // `-` don't go till the end of the search str. and overflow
        {
            boolean flag = true;
            for(int j=0; j < pattern.length; j++) 
            {
                if(search[i + j] != pattern[j])
                {
                    flag = false;
                    break;
                }
            }
          if (flag)
                System.out.println("Match found at " + i);

        }
    }
}