Leetcode字符串拼接

Posted 王六六的IT日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode字符串拼接相关的知识,希望对你有一定的参考价值。

题目链接:412. Fizz Buzz

题目描述:
写一个程序,输出从 1 到 n 数字的字符串表示。

1.如果 n 是3的倍数,输出“Fizz”;
2.如果 n 是5的倍数,输出“Buzz”;
3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
示例:

n = 15,

返回:
[
    "1",
    "2",
    "Fizz",
    "4",
    "Buzz",
    "Fizz",
    "7",
    "8",
    "Fizz",
    "Buzz",
    "11",
    "Fizz",
    "13",
    "14",
    "FizzBuzz"
]

代码如下:

class Solution {
    public List<String> fizzBuzz(int n) {
        //实例化对象用可变的ArrayList
        List<String> ans = new ArrayList<String>();
        //遍历
        for (int i = 1; i <= n; i++) {
        	//使用StringBuffer实例化对象
            StringBuffer sb = new StringBuffer();
            //判断
            if (i % 3 == 0) {
                sb.append("Fizz");
            }
            if (i % 5 == 0) {
                sb.append("Buzz");
            }
            if (sb.length() == 0) {
                sb.append(i);
            }
            ans.add(sb.toString());
        }
        return ans;
    }
}

说一说StringBuffer、String、StringBuilder

  • 与String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
  • 与StringBuffer 之间最大的不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
  • 由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

StringBuffer: 线程安全的可变字符串(长度和内容可变)
对字符串进行拼接操作,每次拼接都会构成一个新的String对象,既耗时,又浪费空间。StringBuffer可以解决这个问题。

StringBuffer的构造方法:

  • public StringBuffer():无参构造方法
  • public StringBuffer(int capacity):指定容量的字符串缓冲区对象
  • public StringBuffer(String str):指定字符串内容的字符串缓冲区对象

StringBuffer()的方法:

public int Capacity():返回当前容量 理论值
public int length() :返回长度(字符数) 实际值

StringBuffer的添加功能:

public StringBuffer append(String str):可以把任意类型的数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
public StringBuffer insert(int offset,String str):在指定位置任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

StringBuffer的删除功能:

public StringBuffer deleteCharAt(int index):删除指定位置字符,并返回本身
public StringBuffer delete(int start,int end):删除从指定位置开始,并从指定位置结束字符,并返回本身(左闭右开)

StringBuffer的截取功能:注意返回值类型不是StringBuffer

public String substring(int start):从start开始一直到结束
public String substring(int start,int end)从指定位置开始,并从指定位置结束截取字符(左闭右开)

public static void main(String[] args) {
	StringBuffer sb =new StringBuffer();
	sb.append("hello").append("world").append("java");
	System.out.println(sb);
	
	String s=sb.substring(5);
	System.out.println(s);
	
	String ss=sb.substring(5, 10);
	System.out.println(ss);
	
}

StringBuffer的替换功能:

public StringBuffer replace(int start,int end,String str):从start到end用str替换(左闭右开)

StringBuffer的反转功能:

public StringBuffer reverse()
public static void main(String[] args) {
	StringBuffer sb=new StringBuffer();
	sb.append("hello");
	sb.reverse();
	System.out.println(sb);
}

以上是关于Leetcode字符串拼接的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode字符串拼接

LEETCODE 003 找出一个字符串中最长的无重复片段

LeetCode 1662 检查两个字符串数组是否相等[数组] HERODING的LeetCode之路

Leetcode 763 划分字母区间

LeetCode:划分字母区间763

1024. 视频拼接 dp