分配给我的任务是从String中找到给定模式的所有可能组合。像给定的字符串是01001001001001。 我必须找到01001在给定字符串中出现的次数?所以我需要的正确答案是给定字符串中存在4种可能的01001组合。我怎样才能在java或C#中编写代码?我试过这个,但结果只有两个字符串匹配。
package regularexpressions;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.*;
import java.util.Scanner;
public class RegularExpressions {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the main string: ");
String main = sc.nextLine();
System.out.println("Enter the pattern string: ");
String patern = sc.nextLine();
Pattern p = Pattern.compile(patern);
// get a matcher object
Matcher m = p.matcher(main);
System.out.println("The input String is="+input);
System.out.println("The Pattren to be recgnoized is="+pattren);
while(m.find()) {
count++;
System.out.println("Match number "
+ count);
System.out.println("start(): "
+ m.start());
System.out.println("end(): "
+ m.end());
}
}
答案 0 :(得分:0)
这是您想要复制并粘贴到java公共类中并尝试
String givenString = "01001001001001";
String pattern = "01001";
int j = 0,count = 0;
int matchChar = 0;
int temp = 0;
for(int i = 0; i < (givenString.length() - pattern.length() + 1); i++)
{
if(givenString.charAt(i) == pattern.charAt(j))
{
temp = i;
while(givenString.charAt(temp) == pattern.charAt(j) && j < pattern.length() - 1)
{
matchChar++;
temp++;
j++;
}
j = 0;
}
j = 0;
if(matchChar == 4)
count += 1;
matchChar = 0;
}
System.out.println(count);