目录
JAVA
1.1 字符处理
判断一个字符是否为数字
Character.isDigit(char c) //判断字符c是否是数字字符,如‘1’,‘2’,是则返回true,否则返回false
判断一个字符是否为字母
Character.isLetter(char c)
判断一个字符是否为字母或数字
Character.isLetterOrDigit(char c)
1.2 队列使用
举例:
java.util.LinkedList<TreeNode> queue = new java.util.LinkedList<TreeNode>();
queue.add(t1);
queue.add(t2);
while(queue.size()>0) {
TreeNode r1 = queue.remove();
TreeNode r2 = queue.remove();
}
1.3数组
数组初始化
三种初始化方法
一.静态初始化:初始化时由程序员显式指定每个数组元素的初始值,有系统决定数组的长度;
1.arrayName = new type[]{element1,element2,element3...}
示例:
int[] intArr;
intArr = new int[]{1,2,3,4,5,9};
2.简化的静态初始化方式 type[] arrayName = {element1,element2,element3...};
示例:
String[] strArr = {"张三","李四","王二麻"};
二.动态初始化:初始化时由程序员指定数组的长度,由系统初始化每个数组元素的默认值。
arrayName = new type[length];
示例:
int[] price = new int[4];
注意:不要同时使用静态初始化和动态初始化,也就是说,不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值。
一旦数组完成初始化,数组在内存中所占的空间将被固定下来,所以数组的长度将不可改变。
初始化后的默认值
注意:数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值:
基本数据类型的整数类型(byte、short、int、long)默认值是0;
基本数据类型的浮点类型(float、double)默认值是0.0;
基本数据类型的字符类型(char)默认值是'\u0000';
基本数据类型的布尔类型(boolean)默认值是false;
类型的引用类型(类、数组、接口、String)默认值是null.
数组转为List集合
Arrays.asList方法需要注意的事项见JAVA——使用Arrays.asList()的注意事项(修改List会同步修改原数组)_m0_37965811的博客-CSDN博客
String[] arr1 = {"1","2","3","4","5"};
List list2 = Arrays.asList(arr1);
1.4 字符串
反转字符串(JAVA和C++对比)
只有StringBuffer和StringBuider有reverse方法,String没有,并且reverse只能反转整个字符串,而不能反转其中的子串
public class StringReverseExample{
public static void main(String[] args){
String string="runoob";
String reverse = new StringBuffer(string).reverse().toString();
System.out.println("字符串反转前:"+string);
System.out.println("字符串反转后:"+reverse);
}
}
//以上代码实例输出结果为:
//字符串反转前:runoob
//字符串反转后:boonur
相比下,C++中的reverse方法更好用,能反转字符串子串
string reverseLeftWords(string s, int n) {
reverse(s.begin(),s.begin()+n); //反转下标[0...n-1]的子串
reverse(s.begin()+n,s.end()); //反转下标[n,length-1]的子串
reverse(s.begin(),s.end()); //反转下标整个字符串
return s;
}
//参数:
//"abcdefg",2
//返回:
//"cdefgab"
获取字符串子串
return type | Method and Description |
String | substring(int beginIndex) Returns a string that is a substring of this string. |
String | substring(int beginIndex, int endIndex) Returns a string that is a substring of this string. |
public String reverseLeftWords(String s, int n) {
return s.substring(n) + s.substring(0, n);
}
//参数:
//"abcdefg",2
//返回:
//"cdefgab"
删掉字符串头尾空白符
trim() 方法用于删除字符串的头尾空白符。
语法:public String trim()
实例
public class Test {
public static void main(String args[]) {
String Str = new String(" www.runoob.com ");
System.out.print("原始值 :" );
System.out.println( Str );
System.out.print("删除头尾空白 :" );
System.out.println( Str.trim() );
}
}
以上程序执行结果为:
原始值 : www.runoob.com
删除头尾空白 :www.runoob.com
replace与replaceAll的区别
replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
replaceAll的参数是regex,即基于规则表达式的替换,比如:可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;
相同点:都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串;
不同点:replaceAll支持正则表达式,因此会对参数进行解析(两个参数均是),如replaceAll("\\d", "*"),而replace则不会,replace("\\d","*")就是替换"\\d"的字符串,而不会解析为正则。
另外还有一个不同点:“\”在java中是一个转义字符,所以需要用两个代表一个。例如System.out.println( "\\" ) ;只打印出一个"\"。但是“\”也是正则表达式中的转义字符,需要用两个代表一个。所以:\\\\被java转换成\\,\\又被正则表达式转换成\,因此用replaceAll替换“\”为"\\",就要用replaceAll("\\\\","\\\\\\\\"),而replace则replace("\\","\\\\")。
例子1:
String test = "hh\\111\\\\\\112f\\q\\";
System.out.println(test);
System.out.println(test.replaceAll("\\\\","\\\\"));
输出:
hh\111\\\112f\q\
hh\111\\\112f\q\
String test = "hh\\111\\\\\\112f\\q\\";
System.out.println(test);
System.out.println(test.replaceAll("\\\\","\\\\\\\\"));
输出:
hh\111\\\112f\q\
hh\\111\\\\\\112f\\q\\
例子2:使用replace和replaceAll展示去掉所有空格的四种方法
str.trim(); //去掉首尾空格
str.replace(" ",""); //去除所有空格,包括首尾、中间
str.replaceAll(" ", ""); //去掉所有空格,包括首尾、中间
str.replaceAll(" +",""); //去掉所有空格,包括首尾、中间
str.replaceAll("\\s*", ""); //可以替换大部分空白字符, 不限于空格
Go
字符串
判断字符串b是否是字符串a的子串并返回出现位置
strings.Index函数签名:
func Index(s, substr string) int
Index returns the index of the first instance of substr in s, or -1 if substr is not present in s.
▾ Example
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Index("chicken", "ken"))
fmt.Println(strings.Index("chicken", "dmr"))
}
out:
4
-1
获取字符串子串(字符串切片)
prefix = prefix[1:4] //返回字符串prefix下标1至3的子串
prefix = prefix[:len(prefix)-1] //返回字符串prefix下标0至len-2的子串