「javadfa」Javadfa算法
本篇文章给大家谈谈javadfa,以及Javadfa算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、给出描述Java表达式的DFA~~~~~~~~~~在线等
- 2、java正则 提取两个字符串中间的字段
- 3、java对日期的加法
- 4、用JAVA编写一个程序实现,计算两个字符串最长相同子串的长度。
- 5、用JAVA将字符串中不同类型字符进行分割
给出描述Java表达式的DFA~~~~~~~~~~在线等
这是DFA算法,自己设定好值,看下结果
import java.util.*;
import java.io.*;
class DFA
{
boolean recognizeString(int move[][], int accept_state[], String word)
{
int s=0;
for (int i = 0; i word.length(); i++)
{
char c = word.charAt(i);
s = move[s][c - 'a'];
}
for (int j = 0; j accept_state.length; j++)
if (s == accept_state[j]) return true;
return false;
}
public static void main(String args[]) throws IOException
{
int n, m;
BufferedReader in = new BufferedReader(new FileReader("DFA.in"));
StringTokenizer st = new StringTokenizer(in.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
while (n != 0)
{
int[][] move = new int[n][m];
for(int i=0; in; i++)
{
st = new StringTokenizer(in.readLine());
for (int j=0; jm; j++)
move[i][j] = Integer.parseInt(st.nextToken());
}
String[] temp = in.readLine().split("\\s");
int[] accept = new int[temp.length];
for (int i=0; iaccept.length; i++) accept[i] = Integer.parseInt(temp[i]);
String word = in.readLine();
while (word.compareTo("#") != 0)
{
DFA dfa = new DFA();
if (dfa.recognizeString(move, accept, word)) System.out.println("YES"); else System.out.println("NO");
word = in.readLine();
}
st = new StringTokenizer(in.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
}
}
}
java正则 提取两个字符串中间的字段
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Cat
{
public static void main(String[] args)
{
String str = "asdf_{asd}_fas_{dfa}_sdfasdf_{dfa}_ ";
String reg = "_\\{((?:(?!\\}_)[\\s\\S])*)\\}_";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
while(matcher.find())
{
System.out.println(matcher.group(1));
}
}
}
java对日期的加法
public static void main(String[] args) {
// Calendar
Calendar ca = Calendar.getInstance();
//当前时间
System.out.println(ca.getTime());
//加一天
ca.add(Calendar.DAY_OF_MONTH, 1);
System.out.println(ca.getTime());
}
不是很明白你的意思,去掉周六日还能得到正确的日期吗?
用JAVA编写一个程序实现,计算两个字符串最长相同子串的长度。
//刚才写的。。。。
import java.io.DataInputStream;
import java.io.IOException;
public class StringLength {
public String search(String s1, String s2) {
String max = "";
for (int i = 0; i s1.length(); i++) {
for (int j = i; j s1.length(); j++) {
String sub = s1.substring(i, j);
if ((s2.indexOf(sub) != -1) sub.length() max.length()) {
max = sub;
}
}
}
return max;
}
public static void main(String[] args) {
String a = "";
String b = "";
System.out.println("请输入第一个字符串:");
a = inputString.getString();
System.out.println("请输入第二个字符串:");
b = inputString.getString();
String output = new StringLength().search(a, b);
System.out.println("相同的字符串是:" + output + "长度为:" + output.length());
}
}
class inputString {
public static String getString() {
DataInputStream dis = new DataInputStream(System.in);
String value = null;
try {
@SuppressWarnings("deprecation")
String str = dis.readLine();
value = str;
} catch (IOException e) {
e.printStackTrace();
}
return value;
}
}
用JAVA将字符串中不同类型字符进行分割
刚刚编写的 实测好用 拷贝getlist和gettype两个方法 给getlist里传入你想要处理的字符串就可以了!!!
package test;
import java.util.ArrayList;
import java.util.List;
public class main {
public static void main(String[] args) {
// TODO Auto-generated method stub
String k = "sdf345+.1dfa";
//data就是你想要的结果 方法就是getlist(String)
ListString data = getlist(k);
}
public static ListString getlist(String str){
int beforeCharTypeFlg=0;
int nowCharTypeFlg=0;
String subString = "";
ListString data = new ArrayListString();
for (int i=0;istr.length();i++){
String nowchar = str.substring(i, i+1);
nowCharTypeFlg = gettype(nowchar);
if(subString.equals("")){
subString = nowchar;
}else{
if(nowCharTypeFlg == beforeCharTypeFlg){
subString += nowchar;
}else{
String temp = subString;
data.add(temp);
subString = nowchar;
System.out.println(temp);
}
if(i == str.length()-1){
String temp = subString;
data.add(temp);
System.out.println(temp);
}
}
beforeCharTypeFlg = nowCharTypeFlg;
}
return data;
}
public static int gettype(String onechar){
String letter_reg = "[a-zA-Z]";
String number_reg = "[0-9]";
if(onechar.matches(letter_reg)){
return 0;
};
if(onechar.matches(number_reg)){
return 1;
};
return 2;
}
}
关于javadfa和Javadfa算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-30,除非注明,否则均为
原创文章,转载请注明出处。