String的用法

本文介绍了Java中字符串的进制转换方法,包括十进制与n进制之间的转换,以及使用String和StringBuilder进行字符操作,如一维和二维数组转换、字典序排列重写compare方法和快速幂、前缀和、差分等算法的应用实例。
摘要由CSDN通过智能技术生成

最近刷算法题,总用到String的一些方法
比如:

  • 可以用String进行进制之间的转换
  • 可以将输入的String字符串,转为char[]数组,然后再进行其他处理
  • 用String进行字符串直接的拼接
    等等

进制转换

十进制转n进制 :

int x;
Integer.String(x,n);

n进制转十进制 :

 String x;
 Integer.parseInt("x",n);
//toString方法--->十进制转n进制
		//十进制转三进制
		String x = Integer.toString(19,3);
		System.out.println(x);
		
		int a = 18;
		//十进制 转 二进制
		String binary = Integer.toBinaryString(a);	//output:10010
		//十进制 转 八进制
		String octal = Integer.toOctalString(a);	//output:22
		//十进制 转 十六进制
		String hex = Integer.toHexString(a);	//output:12
		
		//二进制 转 十进制
		String c = "10010";
		int b = Integer.parseInt(c,2);
		//八 转 十
		int o = Integer.parseInt("22",8);
		//十六 转 十
		int h = Integer.parseInt("12",16);

1.String 转数组

一维 char[] c = string.toCharArray();

		String s = "osjfeojsi";
		char[] c = s.toCharArray();
		for(int i=0;i<c.length;i++) {
			System.out.print(c[i]+" ");	//output : o s j f e o j s i  
		}

二维 c[i] = scan.next().toCharArray();

	   char[][] c = new char[2][10];

       for (int i = 0; i < c.length; i++) {
           String input = scan.next();
           c[i] = input.toCharArray();
       }

       for (int i = 0; i < 2; i++) {
           for (int j = 0; j < 10; j++) {
               System.out.print(c[i][j]);
           }
           System.out.println();
       }

2.字符拼接 String 和 StringBuilder

String 的拼接:

String a = "fhies";
String b = "howefi";
System.out.print(a+b);	//output : fhieshowefi

StringBuilder拼接 : StringBuilder.append();

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String s = scan.next();
		StringBuilder sb = new StringBuilder();
		
		boolean t = false;//表示L还未被装进StringBuilder
		for(int i=0;i<s.length();i++) {
			if(s.charAt(i) == 'L' && t == false) {
				sb.append('L');
				t = true;
			}
			if(s.charAt(i) == 'Q') {
				sb.append('Q');
				t = false;
			}
			
		}
		System.out.println(sb);
	}
}

按照字典序排列

重写list中的compare

  • lamada表达式写法
list.sort((a,b)->(a+b).compareTo(b+a));
  • 完整写法
list.sort(new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				// TODO Auto-generated method stub
				return (o1+o2).compareTo(o2+o1);
			}
		});

例题

在这里插入图片描述
在这里插入图片描述

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		List<String> list = new ArrayList<>();
		int n = scan.nextInt();
		
		for(int i=0;i<n;i++) {
			String s = scan.next();
			list.add(s);
		}
		
		list.sort(new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				// TODO Auto-generated method stub
				return (o1+o2).compareTo(o2+o1);
			}
		});
		for(int i=0;i<list.size();i++) {
			System.out.print(list.get(i));
		}
	}
}

快速幂

前缀和

差分

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值