zoukankan      html  css  js  c++  java
  • leetcode日志(200803) 字符串相加及string相关类

    今天打开每日一题的推荐,是一道简单难度的题目,那就可以一试。

    哎呀呀,怎么看起来这么熟悉,这不是去年复试的时候写的题目吗,当时还是c++写的。

    简单回忆一下,就是string当成char数组,然后从最后一位依次转int相加,超10就向上一位+1。

    注意一下如果最高位有进位需要在前面补个1,别的就没啥了。

     然后再把结果输出出来就可以了。

    思路明确,主要问题是解决字符串和字符数组的操作函数

    不如直接看一下优秀的题解:

     额,说实话第一眼有点懵B,竟然可以这样!倒着运算通过循环进行计算,同时append对结果保存至一个全新字符串中,进位使用carry计算,对本位来说使用对10的余数,对于高位来说使用对10的商。结果最后再使用reverse函数进行反向输出,整体简洁规范,实在是秒!!!

    这就是程序中的艺术吗,果然程序的成长没有极限的,除非突破人类!!!

    除了学习这个思想之外,在此总结一下string,stringbuffer,stringBulider的相关知识(来自网络搜索资料):

    1.String

      他是一个不可类,在此类的一个对象被声明之后,此类则不会被修改,如果有新的赋值变化时,会在堆区重新声明新的空间,并将引用指向新的空间,旧的空间如果没有再次被引用则会垃圾回收。

    原文很生动,在此引用保存一下:

    String a = "123";
    a = "456";
    // 打印出来的a为456
    System.out.println(a)

    对于 a对象来说,首先赋值123,再次赋值456时,并不会更改原有值,而是声明全新的对象,a重新指向新的对象,而原有“123”对象则会等待回收。

    2.StringBuffer

     StingBuffer是一个可变的字符串类,在被创建之后,提供append()、insert()、reverse()、setCharAt()、setLength()等方法对字符串数据进行更改,然后通过tostring方法将此对象转化为string对象。

    StringBuffer b = new StringBuffer("123");
    b.append("456");
    // b打印结果为:123456
    System.out.println(b);

    这里也引用了原文的例子,下面是b对象的内存空间,可以看到b对象并没有新空间变化,而是原有的空间上进行更改

    3.StringBuilder

     StringBuilder与StringBuffer功能相似,都可以在创建后进行修改,但是有一个特殊的地方就是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。

    对于StringBuffer实现线程安全需要添加synchronized锁

    而stringBuilder则不用添加

    因此stringBuilder是线程安全的。

    Java9的改进

      Java9改进了字符串(包括String、StringBuffer、StringBuilder)的实现。在Java9以前字符串采用char[]数组来保存字符,因此字符串的每个字符占2字节;而Java9的字符串采用byte[]数组再加一个encoding-flag字段来保存字符,因此字符串的每个字符只占1字节。所以Java9的字符串更加节省空间,字符串的功能方法也没有受到影响。

    总结的非常简洁,站在巨人肩膀上才能不断进步,继续加油。

  • 相关阅读:
    新一代MQ apache pulsar的架构与核心概念
    Flutter使用fluwx实现微信分享
    BZOJ3622 已经没有什么好害怕的了 动态规划 容斥原理 组合数学
    NOIP2016提高组Day1T2 天天爱跑步 树链剖分 LCA 倍增 差分
    Codeforces 555C Case of Chocolate 其他
    NOIP2017提高组Day2T3 列队 洛谷P3960 线段树
    NOIP2017提高组Day2T2 宝藏 洛谷P3959 状压dp
    NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序
    Codeforces 873F Forbidden Indices 字符串 SAM/(SA+单调栈)
    Codeforces 873E Awards For Contestants ST表
  • 原文地址:https://www.cnblogs.com/PPGwo/p/13428005.html
Copyright © 2011-2022 走看看