针对于笔试的一些输入输出数据做一些小结。
主要是关于String相关的,当然也有一点数组和输入数据相关的。
1.针对于一行未确定数量的数字,再加下一行的一个数字
用Java语言的话:
Scanner sc = new Scanner(System.in);
String[] input = sc.nextLine().split(" ");
for (String s : input) R.add(Integer.parseInt(s));
cnt = sc.nextInt();
先把一行作为字符串提取,再转为Int ,对于下一行的数字直接sc.nextInt即可
读取一行字符串就用sc.nextLine(); 读取一个数字就用 sc.nextInt();
判断有没有就用 sc.hasNextLine() 和 sc.hasNextInt();
用Python的话
R = [int(c) for c in input().split(“ “)]
cnt = int(input())
用C++不好写;
2.关于初始化数组
用C++写:
dp = vector(n, INT_MIN);
用Java写:
dp = new int[n];
Arrays.fill(dp, Integer.MIN_VALUE);
3.关于字符串-Java
提取子字符串
substring(int beginIndex) 从索引开始位置到结尾处的字符串部分
substring(int beginIndex, int endIndex) 左闭右开
A的ASCII码为65 ,a 的ASCII码为91, 中间差32
定义字符串
String str=“hello”;
String str=new String();
String set1=new String(“hello”);
char a[]={‘h’,’e’,’l’,’l’,’o’};
String sChar=new String(a)
String(char[]value, int offset, int count);
String 和 int 的相互转换
String 字符串转整型 int 有以下两种方式:
- Integer.parseInt(str)
- Integer.valueOf(str).intValue()
整型 int 转 String 字符串类型有以下 3 种方法:
- String s = String.valueOf(i);
- String s = Integer.toString(i);
- String s = “” + i;
字符串拼接
可以直接用+号,也可以str1.concat(str2);
字符串大小写转换
str1.toLowerCase() //将字符串所有字母全部转换为小写
str2.toUpperCase() //将字符串中所有字母全部转换为大写
注意是返回值变为了大小写,而不是其本身。
去除字符串中的空格
str.trim()
分割字符串
String 类的 split() 方法可以按指定的分割符对目标字符串进行分割,分割后的内容存放在字符串数组中。该方法主要有如下两种重载形式:
str.split(String sign)str.split(String sign,int limit)
其中它们的含义如下:
- str 为需要分割的目标字符串。
- sign 为指定的分割符,可以是任意字符串。
- limit 表示分割后生成的字符串的限制个数,如果不指定,则表示不限制,直到将整个目标字符串完全分割为止。
使用分隔符注意如下:
1)“.”和“|”都是转义字符,必须得加“\”。
- 如果用“.”作为分隔的话,必须写成
String.split("\\.")
,这样才能正确的分隔开,不能用String.split(".")
。 - 如果用“|”作为分隔的话,必须写成
String.split("\\|")
,这样才能正确的分隔开,不能用String.split("|")
。
2)如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or")
字符串的替换
String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll()
replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串),其语法格式如下:
str.replace(String oldChar, String newChar)
replaceFirst() 方法用于将目标字符串中匹配某正则表达式的第一个子字符串替换成新的字符串,其语法形式如下:
str.replaceFirst(String regex, String replacement)
replaceAll() 方法用于将目标字符串中匹配某正则表达式的所有子字符串替换成新的字符串,其语法形式如下:
str.replaceAll(String regex, String replacement)
// 将文本中的所有”时”和”使”都替换为”是”
String newStrFirst = intro.replaceAll(“[时使]”, “是”);
Java字符串的比较
比较字符串的常用方法有 3 个:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法。
equals() 方法将逐个地比较两个字符串的每个字符是否相同。
唯一不同的是 equalsIgnoreCase() 比较时不区分大小写。
equals() 方法比较字符串对象中的字符。而==
运算符比较两个对象引用看它们是否引用相同的实例。
compareTo() 方法用于按字典顺序比较两个字符串的大小,该比较是基于字符串各个字符的 Unicode 值
str.compareTo(String otherstr);
如果按字典顺序 str 位于 otherster 参数之前,比较结果为一个负整数;如果 str 位于 otherstr 之后,比较结果为一个正整数;如果两个字符串相等,则结果为 0。
查找字符串
String 类的 indexOf() 方法和 lastlndexOf() 方法用于在字符串中获取匹配字符(串)的索引值。
str.indexOf(value)
str.indexOf(value,int fromIndex)
也可以根据索引查找 str.charAt(0);
StringBuffer
StringBuffer 类提供了 3 个构造方法来创建一个字符串,如下所示:
- StringBuffer() 构造一个空的字符串缓冲区,并且初始化为 16 个字符的容量。
- StringBuffer(int length) 创建一个空的字符串缓冲区,并且初始化为指定长度 length 的容量。
- StringBuffer(String str) 创建一个字符串缓冲区,并将其内容初始化为指定的字符串内容 str,字符串缓冲区的初始容量为 16 加上字符串 str 的长度。
StringBuffer 类的 append() 方法用于向原有 StringBuffer 对象中追加字符串。该方法的语法格式如下:
StringBuffer 对象.append(String str)
StringBuffer 类的 setCharAt() 方法用于在字符串的指定索引位置替换一个字符。该方法的语法格式如下:
StringBuffer 对象.setCharAt(int index, char ch);
StringBuffer 类中的 reverse() 方法用于将字符串序列用其反转的形式取代。该方法的语法格式如下:
StringBuffer 对象.reverse();
deleteCharAt() 方法用于移除序列中指定位置的字符,该方法的语法格式如下:
StringBuffer 对象.deleteCharAt(int index);
delete() 方法用于移除序列中子字符串的字符,该方法的语法格式如下:
StringBuffer 对象.delete(int start,int end);
String、StringBuffer和StringBuilder类的区别
Java 提供了 String 类来创建和操作字符串。String 类是不可变类.
两个可变字符串类 StringBuffer 和 StringBuilder. StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能