算法day07 | Java | 字符串 | LeetCode 344,541,卡码网54

74 阅读2分钟

java语法

char[] 和 String的转换

char[] 和 String的转换
String是不可变的 
String->char[] : (String s)  char[] ch = s.toCharArray();
char[]->String : (char[] ch) String s = new String(ch);

java输入

《java输入》

import java.util.Scanner;  //调用Scanner包
Scanner input=new Scanner(System.in); // 先创建输入的对象,然后才能使用输入方法

//创建对象后可以使用输入的方法,对应不同的数据类型应使用不同的输入方法;
//String类型
String str = input.next() ;
//或
String str = input.nextLine() ;
//int类型
int sum = input.nextInt() ;
//float类型
float tem = input.nextFloat() ;
//double类型
double d = input.nextDouble() 

input.next();和input.nextLine();的区别:

input.next();的含义为接收到“ ”空白字符前的一个字符。
input.nextLine();的含义为接收到“\n”换行字符前的一个字符。

stringbuilder

《深入理解String、StringBuffer和StringBuilder》

《【Java 基础篇】Java StringBuilder:可变的字符串操作》

在Java中,字符串是不可变的,这意味着每次对字符串进行操作时都会创建一个新的字符串对象。然而,有时我们需要对字符串进行频繁的操作,这样就会导致大量的对象创建和内存开销。为了解决这个问题,Java提供了StringBuilder类,它是一个可变的字符串操作

StringBuilder sb = new StringBuilder();

344.反转字符串

class Solution {
    public void reverseString(char[] s) {
        for(int i=0,j=s.length-1; i<=j; i++, j--) {
            char c = s[i];
            s[i] = s[j];
            s[j] = c;
        }
    }
}

541. 反转字符串II

  • char[] 和 String的转换
  • 解题关键是,定位好反转的尾部
class Solution {
    public String reverseStr(String s, int k) {
        char[] ch = s.toCharArray();

        for(int i=0; i<ch.length; i+=2*k) {
            int start = i;
            int end = Math.min(ch.length - 1,start + k - 1);

             while(start < end){
                
                char temp = ch[start];
                ch[start] = ch[end];
                ch[end] = temp;

                start++;
                end--;
            }
        }
        return new String(ch);
    }
}

卡码网:54.替换数字

① java的输入

② StringBuilder

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            if (Character.isDigit(s.charAt(i))) {
                sb.append("number");
            }else sb.append(s.charAt(i));
        }
        System.out.println(sb);
    }
}