蓝桥杯做题常用方法(数组、String类)

蓝桥杯做题常用方法(数组、String类)

一、数组

1、获取数组的长度(注意是属性而不是方法)

a.length

2、整型数组的输入

快读快写

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
//用完记得关
in.close();
out.close();

快读 + 单个int数据

int n = Integer.ParseInt(in.readLine());
//或者
String[] strs = reader.readLine().split(" ");
int n = Integer.ParseInt(strs[0]);

快读+ 一维 int 数组:a[]

int[] a = new int[n];
String[] strs = reader.readLine().split(" ");
for (int i = 0; i < n; i++)
	a[i] = Integer.parseInt(strs[i]);

快读 + 二维 int 数组:a[] []

int[] a = new int[n][];
String[] strs = reader.readLine().split(" ");
for (int i = 0; i < n; i++)
	a[i] = Integer.parseInt(strs[i]);

3、char类型数组输入

普通+二维char数组:g[] []

for(int i = 0;i < n;i++){
    g[i]=input.next().toCharArray();
}

快读+一维char数组:g[]

char[] g=in.readLine().toCharArray();

快读+二维char数组:g[] []

for(int i = 0;i < n;i++){
    char[] str = in.readLine().toCharArray();
    for(int j = 0;j < m;j++){
        g[i][j]= str[j];
    }
}
//或者
for(int i = 0;i < n;i++){
    g[i]=in.readLine().toCharArray();
}

4、数组的排序sort

利用Arrays类

Arrays.sort(a);//对整个数组进行排序(从小到大)
Arrays.sort(a,0,n);//对数组指定范围进行排序(0~n-1)

5、数组的填充(初始化赋值)

//一维数组a[]
Arrays.fill(a,-1);//对整个数组赋值-1

//二维数组a[][] 这里要注意区分
for(int i = 0;i < n;i++)
	Arrays.fill(a[i],-1);

6、数组拷贝(深拷贝)
拷贝所有元素
使用Object类的clone方法

int[] a = {1,2,3}
int[] b = a.clone();

拷贝指定位置元素
使用Arrays.copyOf方法

//copyOf(oringinal, int newlength)
//oringinal:原数组      newlength:复制数组的长度
//这个方法是从原数组的起始位置开始复制,复制的长度是newlength。这个方法只能从原数组的起始位置开始复制。
int[] a = {1,2,3};
int[] b = Arrays.copyOf(a,3);

7、数组与List互相转换
数组转List
包装类型数组(注意下面方法只能应用于包装类型数组)

   Integer[] arr = new Integer[] { 1, 2, 3 };
   List<Integer> list = Arrays.asList(arr);

    for(Integer i:list)
                System.out.println(i);

List转数组
使用toArray()方法,用一个预定义的数组作为出参接收转化后的数组

    List<Integer> stockList = new ArrayList<>();
    stockList.add(1);
    stockList.add(2);

    Integer[] stockArr = new Integer[stockList.size()];
    stockArr = stockList.toArray(stockArr);

    for(Integer s : stockArr)
        System.out.println(s+" ");

二、String类

1、输入字符串
快读快写

Bufferedreader bf=new BufferedReader(new InputStreamReader(System.in));
String s[]=bf.readLine().split(" ")
split(" ")表示去掉输入的串中的空格
split("\")表示去掉输入的串中的\
根据题目要求,想去什么符号就在split("")引号中加什么。
int a=Integer.parseInt(s[0]);
将输入的字符串变为整数

常用输入转换:

int a[]=new int[n];
a的下标从1开始
for(int i=1;i<=n;i++){
a[i]=Integer.parseInt(s[i-1]);
}

如何读入确定行数下不确定列数的字符串/数字串?

先读入n行字符串数组
for(int i=0;i<n;i++){
String s[]=in.readLine().split(" ");
再读入每一列的不确定个数的内容
for(int j=0;j<s.length();j++){
int num=Integer.parseInt(s[j]);
}
完整代码
for(int i=0;i<n;i++){
String s[]=bf.readLine().split(" ");
for(int j=0;j<s.length();j++){
int num=Integer.parseInt(s[j]);
}
}

Scanner读入

Scanner sc=new Scanner(System.in);
String s=sc.next();
String s=sc.nextLine();

**sc.next()**从遇到第一个有效字符(非空格、换行符)开始扫描,遇到第一个分隔符或结束符(空格’ ‘或者换行符’\n’)时结束。

**sc.nextLine()**则是扫描剩下的所有字符串直到遇到回车为止。

根据题目所需读入:

需要空格后面的输入内容用sc.nextLine()
不需要空格后面的输入内容用sc.next()
一般情况下推荐sc.nextLine()
有一般就会有特殊,具体视题目而定:
读入时出现空格情况,但是只要第一个串,空格后面的不能读入,如下图所示:
这时用sc.nextLine()就会将后面的数字都读进去造成读入错误
这时就需要用sc.next()遇到空格直接停下来,后面的数字都不读入。

读入输入的字符串中的某个字符

String s=sc.next();
char op=s.charAt(0);
op=='a';
字符串的比较用equals
字符的比较用 ==

2、创建字符串

String s=new String("abc");

3、 length()

作用:获取字符串的长度
int len=s.length();

4、equals()

作用:比较两字符串是否相等(引用类型比较用)
String s1=sc.next();
String s2=sc.next();
s1.equals(s2)

5、charAt()

作用:根据字符串下标获取字符
char a=s.charAt(0);
获取字符串下标为0的字符

补充:
char []a=s.toCharArray();
char b=a[0];
转为数字:int b=a[0]-'0';

6、indexOf()

作用:返回找到的字符串/字符的起始下标,找不到则返回-1。

String s="abcd";
int a=s.indexOf("a");

7、contains()

作用:字符串中包含字符串/字符则返回true,不包含则返回false。

String s=sc.next();
boolean a=s.contains("想寻找的串/字符");

8、split()

作用:去掉字符串内的某个字符
常用于输入分割空格
String s[]=bf.readLine().split(" ");

9、trim()

作用:去掉字符串两边的空格
String s[]=bf.readLine().trim(" ");

10、substring()

substring(int beginIndex, int endIndex);//返回从begin开始到end-1结束的子串

String s = "123456";
String s1 = s.substring(0,3);
System.out.println(s1);  //123

11、toUppercase()

将字符串里的字符都转大写
String s1=s2.touppercase();

12、toLowercase()

将字符串里的字符都转小写
String s1=s2.tolowercase();

13、字符串拼接

(1) 直接加: +=

String s1=sc.next();
String s2=sc.next();
s1+=s2

(2)StringBuffer类
StringBuffer s=new StringBuffer();
s.append(" ")
可以一直追加
s.append(" ").append(" ").append(" ")

14、字符串转为字符数组

char a[]=sc.next().toCharArray();

15、字符转数字

字符串为数字串
int a=s.charAt(i)-'0';
相当于用s.charAt(i)得到的字符的ASCII码减去'0'的ASCII码

字符串为字母串
int a=s.charAt(i)-'A';
int a=s.charAt(i)-'a';
相当于用s.charAt(i)得到的字符的ASCII码减去'A(a)'的ASCII码

16、数字转字符

(char)(i + 'A')

17、String和其他基本数据类型的转换

1.可以使用toString将其他数据类型转换为String类,但这种方法只对包装类起作用(如:Integer)
2.使用String自带的valueOf()方法,支持将基本的数据类型转换
3.注意:int转String用String.valueOf(),别用 +"",差了好几倍时间。
4.而将String转换为其他,可以用自带类的.parseXXX(string)方法

Integer a=new Integer(100);
String s1=a.toString();//类自带的toString()方法

int i=99;
String s2=String.valueOf(i);//String自带的valueOf()方法

Integer b=Integer.parseInt(s2);//每个类都有.parseXXX(String s)方法

18、字符串翻转

String str = "123456";
String newStr = new StringBuilder(str).reverse().toString();
System.out.println(newStr);

19、格式化输出

System.out.println(String.format("%.6f",l)); //保留小数点后6位
String.format("%02d", h);  //不足两位则补0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小胡同学hhh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值