积沙成塔

 

逻辑运算符 “&&“ 与”||“

1、js中的 || 符号 —— ‘真前假后’

   只要‘||’前面为false,不管‘||’后面是true or false, 都返回‘||’后面的值

   只要‘||’前面的为true,不管‘||’后面是true or false,都返回‘||’前面的值

2、js中的 && 符号 —— ‘假前真后’

   只要‘&&’前面是false,无论‘&&’后面是true or false,结果都将返回‘&&’前面的值

   只要‘&&’前面是true,无论‘&&’后面是true or false, 结果都将返回‘&&’后面的值

3、js逻辑运算中: 0、"" 、null、false、undefined、NaN都相当于false,其它为true

有限状态自动机

 百度百科:是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型。有限自动机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。有限状态自动机可以表示为一个有向图。

对有限状态机的介绍

https://blog.csdn.net/cjr15233661143/article/details/11834727?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161486350416780274123466%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161486350416780274123466&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-11834727.pc_search_result_no_baidu_js&utm_term=%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E8%87%AA%E5%8A%A8%E6%9C%BA

字符串匹配算法之有限状态自动机

https://blog.csdn.net/tyler_download/article/details/52549315?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161486350416780274123466%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161486350416780274123466&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-3-52549315.pc_search_result_no_baidu_js&utm_term=%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E8%87%AA%E5%8A%A8%E6%9C%BA

这是对有限状态自动机比较详细的一篇

https://blog.csdn.net/hemeinvyiqiluoben/article/details/84541836?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161486350416780274123466%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161486350416780274123466&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-84541836.pc_search_result_no_baidu_js&utm_term=%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E8%87%AA%E5%8A%A8%E6%9C%BA

输入未知长度的数据,可用string类进行转化

String[] str = new string[0];
str = in.nextLine().split(" ");
int[] a = new int[str.length];
for(int i = 1;i<str.length;i++)
    a[i] = Integer.valueOf(str[i]);

通用方法 Computable界面

public static Computable sum = (Computable []a,int n){
    if(a.length == 0)    return null;
    Computable sum = (Computable) a[0].zero();
    for(int i=0;i<n;i++)
        sum.increment(a[i]);
    return sum;
}
//利用此界面使方法sum通用化

java.lang.Computable 界面

Java的comparable界面中唯一的方法头compareTo用于比较两个元素的大小,例如java.lang.comparable.x.compareTo(y)---返回(x-y)的符号
当x<y时,返回值小于0,当x=y,返回值等于0,当x>y,返回值大于0

Operable界面

有些通用方法同时需要Computable界面和Comparable界面的支持
为此可定义Operable界面如下
public interface Operable extends Computable,Comparable{ }

自定义包装类

由于java的包装类如Integer等已定义为final型,因此无法定义其子类,作进一步扩充。为了需要可自定义包装类。

 字符串转数组省略空格

String line = in.nextLine();
String[] array = line.split("\\s+");
//"\\s+"可以去掉所有空白的部分,包括空格键,tab键,回车键

line.split(" ")只能去掉有空格造成的空白

System.out.println(Arrays.stream(b[n-1]).max().getAsInt());

用来输出二维数组b[n][m]最后一行b[n]中的最大值。

 

二维数组的快速输出

PrintWriter pw = new PrintWriter(new BufferedWriter(OutputStreamWriter(System.out)));

StreamTokenizer的用法

普通用法 

StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); 
 
st.nextToken(); // 获取下一组标记   默认是按照空格分割的   回车,tab是结束符 
int i=(int) st.nval;     //st.navl默认解析出的格式是double
 
st.nextToken();     
double j=st.nval; 
 
st.nextToken();     
String s=st.sval;

多组输入

public class Main {
    public static void main(String[] args) throws IOException {
 
        StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        //PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
        int a, b;
        while(in.nextToken() != StreamTokenizer.TT_EOF)  // 表示读到了文件末尾
        {
            a = (int)in.nval;
            in.nextToken();
            b = (int)in.nval;
            //out.println(a + b);
            System.out.println("a + b = "+(a+b));
        }
        //out.flush();
    }

进制转换函数

10进制转r进制

public class Main {
	public static void main(String[] args) {
		int n = 18;
		Integer.toHexString(n);
		System.out.println(n + "的二进制是:" + Integer.toBinaryString(n));
		System.out.println(n + "的八进制是:" + Integer.toOctalString(n));
		System.out.println(n + "的十六进制是:" + Integer.toHexString(n));
		System.out.println(n + "的三进制是:" + Integer.toString(n, 3));
	}
}

某一进制转10进制

public class Main {
    public static void main(String[] args) {
        String s = "10101";//1+4+16==21
        System.out.println(Integer.parseInt(s,2));//结果是21
        
    }
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值