字符数组

12 IO流

半城伤御伤魂 提交于 2020-03-01 09:59:25
File类: 构造方法 * File(String pathname):根据一个路径得到File对象 * File(String parent, String child):根据一个目录和一个子文件/目录得到File对象 * File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象 创建功能 * public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了,返回false * public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了 * public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来 重命名和删除功能: * public boolean renameTo(File dest):把文件重命名为指定的文件路径 * public boolean delete():删除文件或者文件夹 重命名注意事项 * 如果路径名相同,就是改名。 * 如果路径名不同,就是改名并剪切。 删除注意事项: * Java中的删除不走回收站。 * 要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹 判断功能: import java.io.File; import java.io.IOException; public

剑指Offer刷题总结

你。 提交于 2020-02-28 21:50:31
1. 二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路题 从右上角或者左下角开始缩小范围。 2. 替换空格 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 语法题 3. 从尾到头打印链表 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 头插法 数组反转 栈 递归 4. 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 递归 API:Arrays.copyOfRange() 5. 用两个栈实现队列 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 简单题 6. 旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5

桶排序

北慕城南 提交于 2020-02-28 00:42:15
一,介绍 ①什么是桶排序? 桶排序是在已经数据的范围的条件下,创建若干个桶,根据相应的比较规则将待排数据落入各个对应的桶中,最后扫描 桶 来实现排序。 ②桶排序需要的附加条件 数据的范围已知。 比如,输入整数数据 A(1) A(2)......A(n-1) A(n),它们都是由小于M的整数组成,此时,就可以创建 M 个桶进行桶排序了 再比如,固定长度的字母字符串数据: S(1) S(2) .....S(n-1) S(n),任意的字符串S(i),都由26个小写字母组成,在桶排序过程中,就可以创建26个桶来保存这些字符串 二,桶排序的示例 ①将10万个人的年龄进行桶排序 假设有10万个人的年龄数据, 年龄范围默认是0-99 ,如何对这10万个数据进行排序? 如果用快排啊、归并排序啊...这样的排序算法是可以。但是这样的排序问题更适合桶排序。采用桶排序的方法如下: 建立100个桶,这可以用一个 一维数组来表示。a[0...99],依次扫描10万条数据,根据每条数据的值,记录到桶中。比如,第10个人的年龄是18岁,则a[18]++ (这是将出现的频率记录在桶中,是计数,它是将待排序的元素本身进行比较,而不是将“待排序的元素的 组成部分 ”进行比较) 然后,扫描这100个桶,即可得到有序的数组。 如:一个简单的示例: 所有的数据都在0-5范围内: 4,5,2,3,1,4,3,2,1,5,2

js基础知识点

我们两清 提交于 2020-02-27 07:11:13
1. 变量声明: var 变量名; J avaScript基础数据类型 包括原始类型和引用类型 原始类型有5个: Number(数值) String(字符串) Boolean(布尔) Null(空) Undefined(未定义) 引用类型有1个: Object(对象) 通过typeof(x)可以返回一个变量x的数据类型; 注意一点:typeof运算符对于null类型返回的是object 2.函数 1.函数:函数就是可以重复执行的代码块。 2.语法:function 函数(){} 3.调用:函数定义了,一定要调用 4.形参,实参,实参写在调用函数的括号里,实参写在定义函数括号里 5,返回值 return 返回值返回了要接收,接受的是调用函数。 6,Js不能重载(就是两个函数名相同,下面的函数会把上面的函数覆盖) 7.匿名函数 function(){} 没有函数名,一般要与变量或者事件结合起来使用 8.作用域:全局变量,局部变量。 局部变量只能在函数内部使用。代码执行完,定义的变量也就消失了。 全局变量可以在任何地方使用。 3.循环 ① while循环 while用于循环作用基本一致,通常用来循环数组 语法:while(条件){循环体} ②  do while循环,do while 是while的一个亲戚,它在循环开始前先执行一次操作,然后才进行判断,true就继续执行

数据结构之栈

爱⌒轻易说出口 提交于 2020-02-26 20:10:46
1、栈Stack,栈也是一种线性结构,相比数组,栈对应的操作是数组的子集。栈只能从一端添加元素,也只能从同一端取出元素,这一端称为栈顶。栈是一种先进后出的或者后进先出的数据结构,也称为Last In First Out(LIFO)。 2、封装的数组的代码,可以实现增加,修改,删除,查询,动态扩容,缩容,判断是否为空等等方法。 1 package com.company; 2 3 4 /** 5 * 6 */ 7 public class Array<E> { 8 9 private E[] data;//定义数组 10 private int size;//数组实际的长度 11 12 /** 13 * 构造函数,传入数组的容量capacity构造Array 14 * 15 * @param capacity 初始化数据的容量长度 16 */ 17 public Array(int capacity) { 18 // 使用泛型,可以创建任意类型的数组类型 19 data = (E[]) new Object[capacity]; 20 // 初始化数组的实际内容的长度为0 21 size = 0; 22 } 23 24 /** 25 * 无参数的构造函数,默认数组的容量capacity=10 26 */ 27 public Array() { 28 // 无参构造函数

《C# 6.0 本质论》 - 学习笔记

别等时光非礼了梦想. 提交于 2020-02-26 03:21:31
**《C# 6.0 本质论》 ========== ========== ========== [作者] (美) Mark Michaelis (美) Eric Lippert [译者] (中) 周靖 庞燕 [出版] 人民邮电出版社 [版次] 2017年02月 第5版 [印次] 2017年02月 第1次 印刷 [定价] 108.00元 ========== ========== ========== 【前言】 成功学习 C# 的关键在于,要尽可能快地开始编程。不要等自己成为一名理论方面的 “专家” 之后,才开始写代码。 学习一门计算机语言最好的方法就是在动手中学习,而不是等熟知了它的所有 “理论” 之后再动手。 为了从简单程序过渡到企业级开发, C# 开发者必须熟练地从对象及其关系的角度来思考问题。 一名知道语法的程序员和一名能因时宜地写出最高效代码的专家的区别,关键就是这些编码规范。专家不仅让代码通过编译,还遵循最佳实践,降低产生 bug 的概率,并使代码的维护变得更容易。编码规范强调了一些关键原则,开发时务必注意。 总地说来,软件工程的宗旨就是对复杂性进行管理。 【第01章】 (P001) 学习新语言最好的办法就是动手写代码。 (P003) 一次成功的 C# 编译生成的肯定是程序集,无论它是程序还是库。 在 Java 中,文件名必须和类名一致。 从 C# 2.0 开始

js字符串操作总结

时光总嘲笑我的痴心妄想 提交于 2020-02-26 00:19:46
字符方法 [html] view plain copy <!DOCTYPE html > < html lang= "en" > < head > < meta charset= "utf-8" > < title >字符方法 </ title > </ head > < body > < script type= "text/javascript" > /* charAt方法和charCodeAt方法都接收一个参数,基于0的字符位置 charAt方法是以单字符字符串的形式返回给定位置的那个字符 charCodeAt方法获取到的不是字符而是字符编码 */ var str= "hello world"; console.log(str.charAt(1));//e console.log(str.charCodeAt(1));//101 //还可以使用方括号加数字索引来访问字符串中特定的字符 console.log(str[1]);//e </ script > </ body > </ html > 字符串操作方法 concat方法 [html] view plain copy <!DOCTYPE html > < html lang= "en" > < head > < meta charset= "utf-8" > < title >concat方法 </ title > </

只用这 6 个字符,就可以写出任意 JavaScript 代码!

一个人想着一个人 提交于 2020-02-20 03:20:00
作者简介: 李中凯老师,8年前端开发,前端负责人,擅长JavaScript/Vue。 公众号:1024译站 掘金文章专栏:https://juejin.im/user/57c7cb8a0a2b58006b1b8666/posts 主要分享:Vue.js, JavaScript,CSS 你可能在网上见过有人用几个不同的字符写的各种稀奇古怪的 JavaScript 代码,虽然看起来奇怪,但是能正常运行!比如这个: (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]] 你猜运行结果是什么?你可以自己去控制台试一下。 是不是很神奇,但这到底是怎么回事呢? 事实上,你几乎可以用下面这 6 个字符写出任意的 JavaScript 程序: []()!+ 很多人都知道这个技巧,但是没有多少开发人员知道它到底是如何工作的。今天,我们就来看看它背后的执行原理。我们的目标是用这几个字符来写出字符串 “self” 。姑且用这个字符串向 Self 语言致敬,JavaScript 的灵感来源之一就是它。 基本原理 我们之所以能够抛开其他字符不用,要归功于 JavaScript 的类型系统和数据类型转换机制。 这 6 个字符是这样各显神通的: [] 可以用来创建数组, ! 和 + 可以在数组上执行一些操作,再用 () 给这些操作分组。

常用数组、字符串的方法(详解)

≡放荡痞女 提交于 2020-02-20 03:18:11
1、indexOf( 数组 || 字符串 ); 作用:返回数组中某个指定元素的位置 (下标)。 (‘item’,[‘start’]) 两个参数: item: 必选、查找的元素。 start: 可选参数,规定在字符串中开始检索的位置,它的合法取值是StringObject.legth-1如省略该参数,则从字符串首字符开始检索。 返回值: Number类型 元素在数组中的位置,如果没有搜索到则返回 -1 。 兼容:所有主流浏览器都支持 indexOf()方法,IE8及以下不支持该方法。 2、slice( 数组 || 字符串 ); 作用:该方法是对数组的部分截取,并返回一个数组副本; (‘start’,[‘end’]) 两个参数 : start:参数start是截取的开始数组索引 end :可选参数end是你要截取的最后一个字符的 位置值 加上 1 。 (1) :如果传入的参数是一个,那么将从参数一的索引位置开始截取,一直到数组尾; (2) :如果传入的参数是一个,并且是一个负数的话,那么他会从数组的后面开始截取; (3) :如果传入的参数是一个,并且是一个负数的话,并且它的绝对值大于或等于数组的 length ,那么他会截取整个数组。 (4) :如果两个参数都是负数的话,前面的参数小于后面的参数。 注:位置是固定好的,从左往右找,不包含结尾位置的字符。 3、substr(); 作用

KMP算法的next[]数组通俗解释

被刻印的时光 ゝ 提交于 2020-02-20 02:15:20
我们在一个母字符串中查找一个子字符串有很多方法。KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度。 当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容。 在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向前多跳几个字符,当然它描述的也是子串的对称程度,程度越高,值越大,当然之前可能出现再匹配的机会就更大。 这个next数组的求法是KMP算法的关键,但不是很好理解,我在这里用通俗的话解释一下,看到别的地方到处是数学公式推导,看得都蛋疼,这个篇文章仅贡献给不喜欢看数学公式又想理解KMP算法的同学。 1、用一个例子来解释,下面是一个子串的next数组的值,可以看到这个子串的对称程度很高,所以next值都比较大。 位置i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 前缀next[i] 0 0 0 0 1 2 3 1 2 3 4 5 6 7 4 0 子串 a g c t a g c a g c t a g c t g 申明一下:下面说的对称不是中心对称,而是中心字符块对称,比如不是abccba,而是abcabc这种对称。 (1)逐个查找对称串。 这个很简单