字符数组

Java面试题1-Java基础

别等时光非礼了梦想. 提交于 2020-01-20 10:47:39
实例方法和静态方法有什么不一样 1.在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。 而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。 2.静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许 访问实例成员变量和实例方法,如果需要调用,则需要先实例化;实例方法则无此限制 3.静态方法是在类中使用staitc修饰的方法,在类定义的时候已经被装载和分配。而非静态方法是 不加static关键字的方法,在类定义时没有占用内存,非静态方法只有在类被实例化成对象时,对象 调用该方法才被分配内存 Java中的异常有哪几类?分别怎么使用 Throwable是所有异常的根,java.lang.Throwable Error:错误,Java.lang.Error Exception:异常,java.lang.Exception Exception分为CheckedException和RuntimeException,所有RuntimeException类及其子类的实例 被称为Runtime异常,不属于该范畴的异常则被称为CheckedException checkedException: 只有Java语言提供了Checked异常,Java认为checked异常都是可以被处理的异常,

C语言整理 六 (数组)

喜欢而已 提交于 2020-01-20 00:52:20
数组解释一组具有相同数据类型的数据集合(会再内存中分配连续的地址) 一维数组 定义格式: 类型名 数组名[整型常量表达式]; 例如 int a[10] 定义了一个一维数组a,数组中有10个整型数据元素 说明: 定义数组时,需要指明数组的数据类型 常量表达式可以是整型常量、整型常量表达式或者符号常量,但不能是变量 引用:定义数组后,可以将每一个数组元素作为变量使用 语法格式:`数组名[下标表达式] 说明: 每一个数组元素实质上就是一个变量 数组不可整体引用 引用数组元素时,下标表达式必须是整数 定义数组和引用数组元素的写法相似,但含义不同,注意区分。例如 float f[10]; t=f[9] /*定义了数组f,将f[9]的值赋给了t */ 初始化: 数组全部元素初始化 例如:int a[4]={1,2,3,4,}; 数组部分元素初始化(没有被初始化的元素由编译程序自动将其初始化)例如:int a[10]={1,2,3,4] 全部元素初始化,可以不指定元素个数。例如:int a[]={1,2,3,4} 数组全部元素初始化为0。例如:int a[[10]={0}; 注:数组元素调用时,C语言不会自动检查数组下标是否超出了数组的范围 二维数组 可以看作是一种特殊的一维数组,每个数组元素又是一个一维数组 定义格式:数据类型 数据名[常量表达式1] [常量表达式2] ;例如:int a[3]

剑指offer——java刷题总结【三】

最后都变了- 提交于 2020-01-19 03:36:07
Note 题解汇总: 剑指offer题解汇总 代码地址: Github 剑指offer Java实现汇总 点击目录中的题名链接可直接食用题解~ 有些解法博文中未实现,不代表一定很难,可能只是因为博主太懒```(Orz) 如果博文中有明显错误或者某些题目有更加优雅的解法请指出,谢谢~ 目录 题号 题目名称 21 栈的压入、弹出序列 22 从上往下打印二叉树 23 二叉搜索树的后序遍历序列 24 二叉树中和为某一值的路径 25 复杂链表的复制 26 二叉搜索树与双向链表 27 字符串的排列 28 数组中出现次数超过一半的数字 29 最小的K个数 30 连续子数组的最大和 正文 21、栈的压入、弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 题目分析 解法一: 设置一个指向pop数组的index指针,遍历push数组,针对每一个遍历值做如下操作: 1、将当前遍历值压入栈中; 2、查看栈顶元素和pop数组的当前弹出值是否相等,如果相等则模拟出栈操作,将stack的栈顶元素弹出,并对pop数组的指针进行后移

[总结] 后缀数组学习笔记

人走茶凉 提交于 2020-01-19 02:52:09
$ \(emmm\) 又开了字符串的新坑,下一个阶段大概就是学习后缀家族吧... 没有 紧跟机房里神仙的步伐 先学后缀数组好了 概念 参考博客-> 戳我戳我 求出来SA数组就看了我半天... 放一个板子自己感觉难理解的东西都在注释里了 #include<set> #include<map> #include<cmath> #include<queue> #include<cctype> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using std::min; using std::max; using std::swap; using std::vector; typedef double db; typedef long long ll; #define pb(A) push_back(A) #define pii std::pair<int,int> #define all(A) A.begin(),A.end() #define mp(A,B) std::make_pair(A,B) namespace NewweN{ const int N=1e6+5; int x[N],y[N],c[N]; char s[N];int n,m,num

后缀数组

。_饼干妹妹 提交于 2020-01-19 02:50:17
后缀数组个人感觉的确有点复杂,看了挺久的,听说后缀数组是一种神仙操作,忘记在哪听到这个就学了一下 学习博客:https://www.cnblogs.com/victorique/p/8480093.html 什么是后缀数组 我们先看几条定义: 子串 在字符串s中,取任意i<=j,那么在s中截取从i到j的这一段就叫做s的一个子串 后缀 后缀就是从字符串的某个位置i到字符串末尾的子串,我们定义 以s的第i个字符为第一个元素的后缀为suff(i) 后缀数组 把s的每个后缀按照字典序排序, 后缀数组sa[i]就表示 排名为i的后缀 的起始位置的下标 而它的映射数组rk[i]就表示 起始位置的下标为i的后缀 的排名 简单来说,sa表示排名为i的是啥,rk表示第i个的排名是啥 一定要记牢这些数组的意思,后面看代码的时候如果记不牢的话就绝对看不懂 后缀数组的思想 先说最暴力的情况,快排(n log n)每个后缀,但是这是字符串,所以比较任意两个后缀的复杂度其实是O(n),这样一来就是接近O(n^2 log n)的复杂度,数据大了肯定是不行的,所以我们这里有两个优化。 ps:本文中的^表示平方而不是异或 倍增 首先读入字符串之后我们现根据单个字符排序,当然也可以理解为先按照每个后缀的第一个字符排序。对于每个字符,我们按照字典序给一个排名(当然可以并列),这里称作关键字。

shell基础使用

社会主义新天地 提交于 2020-01-18 12:31:15
2、shell 2.1、shell基础正则表达式 ​ 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。并规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式( Regular Expression ) 。 2.1.1、普通元字符 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“ n ”匹配字符“ n ”。“ \n ”匹配一个换行符。串行“ \\ ”匹配“ \ ”而“ \( ”则匹配“ ( ”。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“ \n ”或“ \r ”之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“ \n ”或“ \r ”之前的位置。 * 匹配前面的子表达式零次或多次。例如,zo 能匹配“ z ”以及“ zoo ”。 等价于{0,}。 + 匹配前面的子表达式一次或多次。例如,“ zo+ ”能匹配“ zo ”以及“ zoo ”,但不能匹配“ z ”。+等价于{1,}。 ? 匹配前面的子表达式零次或一次。例如,“ do(es)?

字符串的扩展

烂漫一生 提交于 2020-01-18 00:57:42
字符串的扩展 字符的Unicode表示法 codePointAt() String.fromCodePoint() 字符串的遍历器接口 at() normalize() includes(), startsWith(), endsWith() repeat() padStart(),padEnd() 模板字符串 实例:模板编译 标签模板 String.raw() 模板字符串的限制 ES6加强了对Unicode的支持,并且扩展了字符串对象。 字符的Unicode表示法 JavaScript允许采用 \uxxxx 形式表示一个字符,其中“xxxx”表示字符的码点。 "\u0061" // "a" 但是,这种表示法只限于 \u0000 —— \uFFFF 之间的字符。超出这个范围的字符,必须用两个双字节的形式表达。 "\uD842\uDFB7" // "𠮷" "\u20BB7" // " 7" 上面代码表示,如果直接在 \u 后面跟上超过 0xFFFF 的数值(比如 \u20BB7 ),JavaScript会理解成 \u20BB+7 。由于 \u20BB 是一个不可打印字符,所以只会显示一个空格,后面跟着一个 7 。 ES6 对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。 "\u{20BB7}" // "𠮷" "\u{41}\u{42}\u{43}" // "ABC"

字符串的扩展

柔情痞子 提交于 2020-01-18 00:56:14
/*--> */ /*--> */ JavaScript允许采用 \uxxxx 形式表示一个字符,其中“xxxx”表示字符的码点。但是,这种表示法 只限于 \u0000 —— \uFFFF 之间 的字符。 超出这个范围 的字符,必须 用两个双字节 的形式表达。 "\uD842\uDFB7" // "𠮷" "\u20BB7" // " 7" 上面代码表示,如果直接在“\u”后面跟上超过 0xFFFF 的数值(比如 \u20BB7 ),JavaScript会理解成“\u20BB+7”。由于 \u20BB 是一个不可打印字符,所以只会显示一个空格,后面跟着一个7。 ES6对这一点做出了改进,只要将 码点放入大括号 ,就能正确解读该字符。 "\u{20BB7}" // "𠮷" "\u{41}\u{42}\u{43}" // "ABC" 大括号表示法与四字节的UTF-16编码是等价的 。 1) codePointAt() JavaScript内部,字符以UTF-16的格式储存,每个字符固定为2个字节。对于那些需要 4个字节储存 的字符(Unicode码点 大于0xFFFF的字符 ),JavaScript会认为它们是两个字符。 var s = "𠮷"; s.length // 2 s.charAt(0) // '' s.charAt(1) // '' s.charCodeAt(0) //

IO流

北城以北 提交于 2020-01-17 13:32:45
一、概念介绍 1、什么是IO流? I: InputStream,输入,读取,从硬盘到内存,读进来 O: Output,输出,写入,从内存到硬盘,写出去 2、IO流的分类 (1)按照流的方向: 输入流:字节输入流/字符输入流 输出流:字节输出流/字符输出流 (2)按照流中的内容 字节流:计算机中的一切都是字节,可以一次操作一个/多个字节,可以操作任意类型的文件。 字符流:只能操作纯文本文件,用记事本打开,可以看得懂的文件。 (PS:.java、.txt、.html、.css 是纯文本文件;.doc、.xls不是纯文本文件) 3、文件的续写与换行 (1)文件的续写 构造方法: FileOutputStream(File path, boolean append) FileOutputStream(String path, boolean append) 其中, 参数一:String/File类型的文件路径; 参数二:boolean append(true就是追加写入,继续写;false就是重新写,覆盖写。不写默认为false)。 (2)换行 \r\n 适用于Windows系统,每行结尾是“回车+换行”; \n 适用于Unix系统里,每行结尾只有“换行”; \r 适用于Mac系统,每行结尾是“回车”,即 “\r” 。从 Mac OS X 开始与Linux统一。 二、IO流 1、字节流 1

C# .Net中的类型转换

倖福魔咒の 提交于 2020-01-16 21:55:15
1. 装箱、拆箱还是别名 许多 C#.NET 的书上都有介绍 int -> Int32 是一个装箱的过程,反之则是拆箱的过程。许多其它变量类型也是如此,如:short <-> Int16,long <-> Int64 等。对于一般的程序员来说,大可不必去了解这一过程,因为这些装箱和拆箱的动作都是可以自动完成的,不需要写代码进行干预。但是我们需要记住这些类型之间的关系,所以,我们使用“别名”来记忆它们之间的关系。 C# 是全面向对象的语言,比 Java 的面向对象都还彻底——它把简单数据类型通过默认的装箱动作封装成了类。Int32、Int16、Int64 等就是相应的类名,而那些我们熟悉的、简单易记的名称,如 int、short、long 等,我们就可以把它称作是 Int32、Int16、Int64 等类型的别名。那么除了这三种类型之外,还有哪些类有“别名”呢?常用的有如下一些: bool -> System.Boolean (布尔型,其值为 true 或者 false) char -> System.Char (字符型,占有两个字节,表示 1 个 Unicode 字符) byte -> System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255) sbyte -> System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128