ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Leetcode】字符串拼接

2021-10-13 11:02:23  阅读:180  来源: 互联网

标签:String int StringBuffer public 拼接 字符串 sb Leetcode append


题目链接: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);
}

在这里插入图片描述

标签:String,int,StringBuffer,public,拼接,字符串,sb,Leetcode,append
来源: https://blog.csdn.net/m0_58058653/article/details/120738515

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有