判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
LeetCode.字符串转换整数 (atoi)
请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:
- 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。
- 假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。
- 该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。
- 注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换,即无法进行有效转换在任何情况下,若函数不能进行有效的转换时,请返回 0 。
LeetCode.反转整数
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
LeetCode.Z字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “LEETCODEISHIRING” 行数为3时,排列如下:
L C I R
E T O E S I I G
E D H N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:”LCIRETOESIIGEDHN”。
LeetCode-最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
LeetCode-寻找两个正序数组的中位数
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?
LeetCode-无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
LeetCode-两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
LeetCode-两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
3.Java基础学习之实现线程的三种方式
一、进程和线程
什么是进程?说简单一点,就是正在运行中的程序。那什么是程序呢?学术上对程序的定义是一组计算机能识别和执行的指令集合(《C程序设计》谭浩强著)。翻译成白话文,程序就是能在计算机上运行操作完成特定任务的源代码。只是程序是静态的,不会动的,无论何时程序都是存在的,当程序遇上数据和进程控制块之后,它就会摇身一变成为进程。进程的执行是并发的(不是并行的),每个进程之间相互独立,各个进程拥有独立的资源。并发执行是指在一个特定的时刻只能有一个进程在执行,我们之所以感觉到电脑可以执行“同时”执行很多进程那是因为每个进程在操作系统中被快速的轮换执行,微观上的快速交换使得宏观上表现的是“同时”执行,其实这只是一种假象而已。我们不妨来举个例子,一个人一边看电影,一边听演员的台词,看起来听和看是同时进行的,但事实情况真的是这样吗?人类的大脑在一个时刻只能处理看或者听的感知,当大脑在处理视觉时,听觉会被暂时搁置,当大脑处理听觉时,视觉处理会被暂时搁置,当两者被快速轮换时,我们感觉是同时看到画面和听到台词的。讲到这里,并发的好处就显而易见了,。假如让你先看一遍无声画面,再听一遍无画面台词,估计观众怎么也不会同意。
进程的出现解决的是CPU利用率的问题。进程属于在处理器这一层上提供的抽象;线程则属于在进程这个层次上再提供了一层并发的抽象。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
引入线程的好处: