📄 fandf.java
字号:
import java.io.*;
import java.util.*;
class First
{
char v;
int i;
String Fi;
String Fo;
First(char a)
{
v=a;
i=0;
Fi="";
Fo="";
}
First()
{
v=' ';
i=0;
Fi="";
Fo="";
}
};
public class FandF{
/**
* @param args
*/
public static void main(String[] args) throws Exception
{
BufferedReader inStream=new BufferedReader(new FileReader("wen.txt"));
FileOutputStream fos1=new FileOutputStream("First.txt");
FileOutputStream fos2=new FileOutputStream("Follow.txt");
String lines;
String line;
lines="";
line=inStream.readLine();
while(line!=null)
{
String[] keys=line.split(" ");
lines+=keys[0]+" ";
for(int i=1;i<keys.length;i++)
lines+=keys[0].charAt(0)+"->"+keys[i]+" ";
line=inStream.readLine();
}
String[] keys=lines.split(" ");
for(int i=0;i<keys.length;i++)
System.out.println(keys[i]);
line="";
for(int i=0;i<keys.length;i++)
{
int a=0;
for(int j=0;j<line.length();j++)
if(line.charAt(j)==keys[i].charAt(0))
a=1;
if(a==0)
line+=keys[i].charAt(0)+" ";
}
System.out.println(line);
String[] vN=line.split(" ");
line="";
for(int i=0;i<keys.length;i++)
{
for(int j=3;j<keys[i].length();j++)
{
int b=0;
for(int l=0;l<vN.length;l++)
if(vN[l].charAt(0)==keys[i].charAt(j))
{
if(line.length()!=0)
if(line.charAt(line.length()-1)!=' ')
line+=" ";
b=1;
break;
}
if(b==0)
{
int a=0;
for(int k=0;k<line.length();k++)
if(line.charAt(k)==keys[i].charAt(j))
a=1;
if(a==0)
line+=keys[i].charAt(j);
}
}
if(line.length()!=0)
if(line.charAt(line.length()-1)!=' ')
line+=" ";
}
System.out.println(line);
String[] vT=line.split(" ");
First first[]=new First[vN.length];
int quque[]=new int[keys.length];
int quque0[]=new int[keys.length];
for(int i=0;i<vN.length;i++)
first[i]=new First(vN[i].charAt(0));
int vnLable=0;
for(int i=0;i<keys.length;i++)
quque[i]=-1;
for(int i=0;i<keys.length;i++)
quque0[i]=0;
for(int i=0;i<keys.length;i++)
{
int j,k;
for(j=0;j<vN.length;j++)
if(first[j].v==keys[i].charAt(0))
break;
if(keys[i].charAt(3)==keys[i].charAt(0))
continue;
for(k=0;k<vN.length;k++)
if(keys[i].charAt(3)==vN[k].charAt(0))
{
first[j].i=1;
quque[i]=3;
vnLable++;
break;
}
if(quque[i]==-1)
{
for(k=0;k<first[j].Fi.length();k++)
if(first[j].Fi.charAt(k)==keys[i].charAt(3))
break;
if(k==first[j].Fi.length())
first[j].Fi+=keys[i].charAt(3);//+" ";
}
}
while(vnLable!=0)
{
int i,j,k;
for(i=0;i<quque.length;i++)
{
if(quque[i]!=-1)
{
for(j=0;j<vN.length;j++)
if(first[j].v==keys[i].charAt(0))
break;
for(k=0;k<vN.length;k++)
if(first[k].v==keys[i].charAt(quque[i]))
break;
if(first[k].i==0)
{
int elable=0;
for(int n=0;n<first[k].Fi.length();n++)
{
if(first[k].Fi.charAt(n)=='@')
{
if(quque[i]+1<keys[i].length())
{
if(first[j].v!=keys[i].charAt(quque[i]+1))
{
int m;
for(m=0;m<vN.length;m++)
if(vN[m].charAt(0)==keys[i].charAt(quque[i]+1))
break;
if(m==vN.length)
first[j].Fi+=keys[i].charAt(quque[i]+1);
else
elable=1;
}
}
}
else
first[j].Fi+=first[k].Fi.charAt(n);
}
if(elable==1)
quque[i]++;
else
{
first[j].i=0;
vnLable--;
quque[i]=-1;
}
}
}
}
}
for(int i=0;i<vN.length;i++)
{
String str="";
for(int j=0;j<first[i].Fi.length();j++)
{
if(first[i].Fi.charAt(j)==' ')
if(str.length()!=0)
if(str.charAt(str.length()-1)==' ')
continue;
else
str+=first[i].Fi.charAt(j);
else
continue;
else
{
int k;
for(k=0;k<str.length();k++)
if(str.charAt(k)==first[i].Fi.charAt(j))
break;
if(k==str.length())
str+=first[i].Fi.charAt(j);
}
}
first[i].Fi=str;
}
for(int i=0;i<vN.length;i++)
{
fos1.write((first[i].v+" "+first[i].Fi).getBytes());
fos1.write("\r\n".getBytes());
}
first[0].Fo+='#';
for(int i=0;i<keys.length;i++)
{
for(int j=3;j<keys[i].length();j++)
{
int j0;
int k;
for(k=0;k<first.length;k++)
if(first[k].v==keys[i].charAt(j))
break;
if(k<first.length)
{
if(j+1==keys[i].length())
{
if(first[k].v!=keys[i].charAt(0))
{
first[k].i=1;
if(quque[i]==-1)
quque[i]=j;
quque0[i]=j;
vnLable++;
}
}
else
{
j0=j;
int lable0=1;
while(lable0==1&&j0<keys[i].length()-1)
{
int n;
lable0=0;
for(n=0;n<first.length;n++)
if(first[n].v==keys[i].charAt(j0+1))
break;
if(n==first.length)
{
first[k].Fo+=keys[i].charAt(j0+1);
break;
}
else
for(int m=0;m<first[n].Fi.length();m++)
{
if(first[n].Fi.charAt(m)!='@')
first[k].Fo+=first[n].Fi.charAt(m);
else
{
lable0=1;
j0++;
}
}
}
if(lable0==1&&j0==keys[i].length()-1)
{
first[k].i=1;
if(quque[i]==-1)
quque[i]=j;
quque0[i]=keys[i].length()-1;
vnLable++;
}
}
}
}
}
while(vnLable>0)
{
int i,j,k;
for(i=0;i<quque.length;i++)
{
if(quque[i]!=-1)
{
for(int n=quque[i];n<=quque0[i];n++)
{
for(j=0;j<first.length;j++)
if(first[j].v==keys[i].charAt(n))
break;
for(k=0;k<first.length;k++)
if(first[k].v==keys[i].charAt(0))
break;
if(first[k].i==0)
{
first[j].Fo+=first[k].Fo;
quque[i]=-1;
vnLable--;
}
}
}
}
}
for(int i=0;i<first.length;i++)
{
fos2.write((first[i].v+" "+first[i].Fo).getBytes());
fos2.write("\r\n".getBytes());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -